加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

从Windows窗体加载WPF窗口时出现问题System.ExecutionEngineExce

发布时间:2020-12-14 02:52:57 所属栏目:Windows 来源:网络整理
导读:我发现了一些相当奇怪的行为…… 以下是如何复制问题: 创建WPF应用程序项目. 从App.xaml文件中删除StartupUri. 使用签名“private void Application_Startup(object sender,StartupEventArgs e)”向应用程序添加启动事件处理程序 现在,向项目添加一个表单(
我发现了一些相当奇怪的行为……

以下是如何复制问题:

>创建WPF应用程序项目.
>从App.xaml文件中删除StartupUri.
>使用签名“private void Application_Startup(object sender,StartupEventArgs e)”向应用程序添加启动事件处理程序
>现在,向项目添加一个表单(右键单击并选择添加新项目).
>在Application_Startup方法中,创建表单对象并将其显示为Form1 f1 = new Form1(); f1.ShowDialog();
>在实际的Form1上,向设计器添加一个按钮,并向该按钮添加一个单击事件处理程序.
>将新的WPF窗口添加到项目Window1.
>在步骤6中创建的Form1的按钮单击事件处理程序中,添加代码行以创建显示WPF窗口:Window1 w1 = new Window1(); w1.Show();
>运行项目并单击winform上的按钮以显示WPF窗口…到目前为止工作正常.

>关闭WPF窗口,然后再次单击winform按钮.这次你应该得到例外.

所以,基本上我所做的是创建一个显示winform的WPF应用程序.然后,winform显示WPF窗口.

第一次显示WPF窗口时,一切正常.如果它关闭,然后重新打开,我得到例外!我也可以通过多次单击按钮来打开多个WPF窗口.然而,一旦最后一个关闭,我再也无法再打开另一个……

我也尝试了在http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/442782b1-00a1-4e2e-9cc6-ae99b6699126/建议的各种提示,但那些没有帮助.

为什么会这样?

解决方法

默认的Wpf applicationshutdown行为(在VS的项目属性中的“应用程序”选项卡上指定或使用Application.Xaml中的ShutdownMode属性)是“在最后一个窗口关闭”.这意味着当您关闭您创建的Wpf窗口时,Wpf会关闭应用程序框架,因此任何后续窗口创建都将引发异常.

您可以通过将关闭模式设置为“On explicit shutdown”(Xaml中的“OnExplicitShutdown”)来避免此问题.然后,当您希望应用程序终止时(例如,当winforms表单关闭时),您将需要手动调用Application.Current.Shutdown.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读