use*_*392 24 .net c# wpf exception-handling unhandled-exception
.NET中的AppDomain.UnhandledException和Application.DispatcherUnhandledException有什么区别?
我需要一个在发生任何未处理的异常时触发的事件.我遇到过这两个,但我不知道他们在哪些方面彼此不同.还有,有没有被解雇的情况?
Qua*_*ter 13
Application.DispatcherUnhandledException
将处理WPF应用程序中主UI线程上抛出的异常. AppDomain.UnhandledException
将处理在任何线程上抛出的异常并且从未捕获过.这包括您手动创建的线程或Console应用程序中的主线程.WPF正在捕获UI线程上的异常,因此您将看不到它们AppDomain.UnhandledException
.
另请注意,未处理的异常通常会终止运行时,因此在AppDomain.UnhandledException
引发之后,程序将立即退出.相反,Application.DispatcherUnhandledException
正在捕捉异常,并将让您的程序继续.
DispatcherUnhandledException仅由UI线程引发,并且仅在运行事件时引发异常时引发.特别是处理这些异常有一点传统,Windows Forms也使用Application.ThreadException(命名不佳,与线程无关).
原因是由于UI事件处理程序并不总是过于显着地改变程序状态,因此处理异常并保持程序活动的可能性很小.这需要一厢情愿的大量帮助.Windows Forms将此作为极端,它显示一个ThreadExceptionDialog,它具有一个Continue按钮,允许用户忽略该异常.WPF不这样做,你必须自己写一个像这样的对话框.这就是为什么活动在那里.
DispatcherUnhandledException的默认操作是不捕获异常.所以你可以忽略它,接下来会触发AppDomain.UnhandledException.
归档时间: |
|
查看次数: |
5914 次 |
最近记录: |