我在WPF应用程序中遇到问题。我写了这段代码:
public partial class App : Application
{
public App()
{
AppDomain.CurrentDomain.UnhandledException += new
UnhandledExceptionEventHandler(MyHandler);
}
void MyHandler(object sender, UnhandledExceptionEventArgs e)
{
Exception exception = e.ExceptionObject as Exception;
MessageBox.Show(exception.Message, "ERROR",
MessageBoxButton.OK, MessageBoxImage.Error);
}
...
}
但是当发生未处理的异常时,屏幕上会出现很多MessageBox(例外情况发生在定时例程中),关闭其中一个后,Windows会发出一个未处理的异常信号。
如何避免多个MessageBox?
如何避免未处理异常的消息?
如何在例外后终止申请?
您可以轻松地假设,我想用MessageBox显示一条消息(但只有一条),然后在没有任何其他消息的情况下终止应用程序。
在与此参数相关的previous question中,Kyle Rozendo告诉我使用DispatcherUnhandledException。是否有必要或我编写的代码是否足够?
谢谢。
答案 0 :(得分:7)
您还可以使用Application.Exit()
或System.Environment.Exit(exitCode)
在显示错误对话框后立即关闭应用程序。
答案 1 :(得分:3)
您可以通过将静态布尔值firstTime
初始化为true
并使用异常处理程序中的代码来避免多个消息框:
void MyHandler(object sender, UnhandledExceptionEventArgs e) { if (firstTime){ Exception exception = e.ExceptionObject as Exception; MessageBox.Show(exception.Message, "ERROR", MessageBoxButton.OK, MessageBoxImage.Error); firstTime = false; }else{ // Now kill the process.... } }
要终止此过程,请在MyHandler
:
System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess(); proc.Kill();