C#WPF Dispatcher.UnhandledException无法捕获异常

时间:2018-11-26 19:17:37

标签: c# wpf unhandled-exception

继承的WPF应用程序在App.xaml.cs中设置Dispatcher.UnhandledException:

public App() : base()
{
    this.Dispatcher.UnhandledException += OnDispatcherUnhandledException;
}

除了偶尔会出现“程序已停止工作”而未调用OnDispatcherUnhandledException的情况。 根据其他线程的大量讨论,正在添加以下内容:

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

,但不知道这有什么帮助。 谁能解释Dispatcher和CurrentDomain UnhandledException之间的区别?

2 个答案:

答案 0 :(得分:2)

似乎您在另一个线程中发生了异常。您可以调试CurrentDomain_UnhandledException来了解它们的来源。 Dispatcher.UnhandledException处理与该Dispatcher关联的特定UI线程上的异常。如果只有一个UI线程(通常),则它应处理这些异常。如果其他线程(最有可能是非UI线程)中有异常,则可以使用AppDomain.CurrentDomain.UnhandledException处理这些异常。

http://blogs.microsoft.co.il/arik/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application/

答案 1 :(得分:0)

您可能会遇到一些无法捕获的异常。例如。 StackOverflowExceptionThreadAbortExceptionAccessViolationException(通常来自错误的本机代码)。

阅读this answer了解更多信息。