【发布时间】:2015-08-11 01:11:25
【问题描述】:
我正在设计一组顺序模式对话框。以下代码似乎可以正常工作,没有任何问题。通过创建自定义 ApplicationContext 并将其传递给 Application.Run,或者将最后一个模式对话框传递给 Application.Run 来代替调用 ShowDialog,我会获得什么? (编辑:显然调用 Application.Run(...) 将取代 Application.Exit())
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f = new Form1();
f.ShowDialog(); //Show a modal dialog
Form1 f2 = new Form1();
f2.ShowDialog(); //Chain another modal dialog
Application.Exit();
}
【问题讨论】:
-
在您的情况下没有太大区别(因为
ShowDialog),但只知道因为您使用的是模态对话框,如果您有多个表单可能会导致问题,例如尝试从模态切换对话框到非模态对话框同时打开。您还面临着应用程序中存在多个 UI 线程的风险。 -
另外,
Application.Exit应该在消息循环中被调用,它会导致Application.Run返回。如果您尝试在其中一种表单中使用它,您可能会得到意想不到的结果,因为它内部没有运行Application.Run。