我尝试在runnig wpf应用程序之前打开对话框窗口:
public class Program
{
[STAThread]
public static void Main(string[] args)
{
var app = new App();
var win = new MainWindow();
if (win.ShowDialog().GetValueOrDefault())
{
app.Run();
}
}
}
class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var win = new Window1();
win.Show();
}
}
为什么win.ShowDialog()运行应用程序(app.OnStartup被执行)? 但是,win.Show()并没有运行应用程序
[STAThread]
public static void Main(string[] args)
{
var app = new App();
var win = new MainWindow();
win.Show();
app.Run();
}
为什么会出现这种情况???
由于
答案 0 :(得分:0)
ShowDialog
启动自己的消息循环。它与Application.Run
几乎完全相同,并且由于您已经创建了应用程序的实例,因此已经发送了启动消息(井,调度),并且将由{@中的消息循环(调度程序)解释。 {1}}。 ShowDialog
基本上只向队列发送消息,因此除非有消息循环处理消息,否则它不会执行任何操作。
如果要在注册启动之前显示对话框,请不要在显示对话框之前创建应用程序实例。