0

我在 wpf 应用程序中有简单的窗口

<Window ... >
     <Frame  Name="contentFrame" Margin="0 60 0 0" Source="ContentPage.xaml" NavigationUIVisibility="Hidden"/>
</Window>

和名为 SettingsPage 的简单页面函数(公共部分类 SettingsPage : PageFunction in code-behind)。在某些时候,我在窗口代码隐藏中执行代码

    SettingsPage settingsPage = new SettingsPage();
    settingsPage.Return += settingsPage_Return;
    contentFrame.NavigationService.Navigate(settingsPage);

在哪里

public void settingsPage_Return(object sender, ReturnEventArgs<bool> e)
    {
        String test="test";
    }

在页面功能中我执行代码

OnReturn(false);

并获得 System.ExecutionEngineException。我需要捕获 SettingsPage 关闭事件,并且在 SettingsPage 中创建委托并手动引发它时创建了它,但我不明白为什么标准 WPF 功能不起作用。任何人都知道为什么 WPF 在这种情况下会引发错误?

4

1 回答 1

0

这可能是因为您的页面已被垃圾收集。System.ExecutionEngineException 的原因通常是这样。相关的 MSDN 定义说:

在某些情况下,以 .NET Framework 为目标的应用程序可能会在垃圾回收期间引发 ExecutionEngineException 异常,而此时应用程序或运行它的系统处于高负载状态。作为一种解决方法,您可以通过修改应用程序的配置文件来禁用并发垃圾回收。有关更多信息,请参阅如何:禁用并发垃圾收集。

禁用并发垃圾收集可能是一种确定是否真的如此的方法。

于 2012-10-31T09:48:08.060 回答