从Windows窗体加载WPF窗口时询问System.ExecutionEngineeException
我发现了一些相当奇怪的行为 下面是如何复制问题:从Windows窗体加载WPF窗口时询问System.ExecutionEngineeException,wpf,winforms,integration,Wpf,Winforms,Integration,我发现了一些相当奇怪的行为 下面是如何复制问题: 创建WPF应用程序项目 从App.xaml文件中删除StartupUri 将启动事件处理程序添加到具有签名“private void Application\u Startup(object sender,StartupEventArgs e)”的应用程序 现在,将表单添加到项目中(右键单击并选择AddNewItem) 在Application_Startup方法中,创建表单对象并将其显示为Form1 f1=new Form1();f1.Show
private void Application\u Startup(object sender,StartupEventArgs e)
”的应用程序Form1 f1=new Form1();f1.ShowDialog()代码>
window1w1=newwindow1();w1.Show()代码>
为什么会发生这种情况?默认的Wpf应用程序关闭行为(在VS中项目属性的“应用程序”选项卡上指定,或使用Application.Xaml中的ShutdownMode属性)是“在最后一个窗口关闭时”。这意味着,当您关闭创建的Wpf窗口时,Wpf会关闭应用程序框架,因此任何后续的窗口创建都会引发异常
通过将关闭模式设置为“显式关闭”(Xaml中的“OnExplicitShutdown”)可以避免此问题。然后,当您希望应用程序终止时(例如,当winforms窗体关闭时),您需要手动显式调用Application.Current.Shutdown。+1。如果要结束进程(例如winform),是否仍需要调用Application.Current.Shutdown()?如果是,如果没有,会发生什么?您显示了xaml,因为我在WinForms应用程序中添加了WPF窗口,所以在Program.cs中没有app.xaml,所以我在创建System.Windows.application的新实例时添加了它<代码>System.Windows.Application.Current.ShutdownMode=ShutdownMode.OnExplicitShutdown代码>