如果发生未处理的异常,App.OnSuspending仍然被调用?

时间:2014-03-27 20:08:41

标签: c# windows-8 windows-runtime windows-store-apps

标题说明了一切。基本上,在Windows 8商店应用程序中,如果发生未处理的异常,那么是否会调用OnSuspending事件?我发现这几乎不可能以任何确定性进行调试

2 个答案:

答案 0 :(得分:0)

不,不叫它。 :(

我在使用新的MediaCapture API进行开发时发现了这一点。如果您不清理资源(例如停止录制/预览),则手机会变得不稳定,并在下次尝试使用相机时冻结操作系统。建议使用挂起事件来清理资源,这就是我所做的。但是如果遇到未处理的异常,我的手机(设备不是模拟器)会变得不稳定,因此没有调用清理方法。这使我相信在未处理的异常中,不会调用挂起。

http://msdn.microsoft.com/en-US/library/windows/apps/xaml/Dn642092(v=win.10)#cleaning_up_mediacapture_resources_properly

我建议做berXpert建议的事情。设置处理为真,然后退出。

答案 1 :(得分:-1)

如果你需要在未处理之后调用某些东西,你可以附加到App对象的unhandledexception事件:

public App()
{
    ...
    this.UnhandledException += (s,e) => { 
            e.Handled = true; 
            this.DoSomethingWithTheError; 
            this.Exit(); 
    };
}

它将以任何方式退出应用程序。