在未处理的exception之后终止应用程序

我在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); } ... } 

但是当发生未处理的exception时,屏幕上会出现很多MessageBox(例外情况发生在定时例程中),关闭其中一个后,Windows会发出一个未处理的exception信号。

如何避免多个MessageBoxes?
如何避免未处理exception的消息?
如何在exception后终止应用程序?
您可以轻松地假设,我想用MessageBox显示一条消息(但只有一条),然后在没有任何其他消息的情况下终止应用程序。

在之前与此论点相关的问题中 , Kyle Rozendo告诉我使用DispatcherUnhandledException。 是否有必要或我编写的代码是否足够?

谢谢。

您可以通过将静态布尔firstTime初始化为true来避免多个消息框,并使用exception处理程序中的代码:

 void MyHandler(对象发送者,UnhandledExceptionEventArgs e) 
 { 
    if(firstTime){
        exceptionexception= e.ExceptionObject as Exception; 
         MessageBox.Show(exception.Message,“ERROR”, 
                         MessageBoxButton.OK,MessageBoxImage.Error); 
         firstTime = false;
    }其他{
         //现在杀了进程......
    }
 } 

要终止进程,请在MyHandler中执行此MyHandler

 System.Diagnostics.Process proc = System.Diagnostics.Process.GetCurrentProcess();
 proc.Kill();

您还可以使用Application.Exit()System.Environment.Exit(exitCode)在显示错误对话框后立即关闭应用程序。