在我的应用程序中,我想在出现任何未处理的异常时显示消息对话框。但当抛出未处理的异常时,似乎没有出现对话框消息,显示消息弹出窗口是否有效?另外在 MSDN 文档中我没有找到太多相关信息。
以下是我正在使用的测试代码:
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
this.UnhandledException += App_UnhandledException;
}
private async void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageDialog dialog = new MessageDialog("Unhandled Execption", "Exception");
await dialog.ShowAsync();
}
这是可能的,但您需要确保设置UnhandledExceptionEventArgs.Handled
在显示之前将属性设置为 trueMessageDialog
。如果Handled
属性未设置,操作系统将在事件处理程序返回后立即终止应用程序,在本例中是一旦执行到达await dialog.ShowAsync()
。由于应用程序会立即终止,因此您甚至没有机会看到该对话框。
理想的实现如下所示:
private async void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
e.Handled = true;
MessageDialog dialog = new MessageDialog("Unhandled Execption", "Exception");
await dialog.ShowAsync();
Application.Exit();
}
一旦用户确认MessageDialog
,应用程序以编程方式终止。这是一个很好的做法,因为在未处理的异常之后,我们可能不知道应用程序处于什么状态,并且可能无法恢复。
您还可以执行某种日志记录或让用户发送错误报告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)