在未处理的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)
在显示错误对话框后立即关闭应用程序。