C# WPF将异常消息从线程池线程传递到UI

C# WPF将异常消息从线程池线程传递到UI,c#,wpf,C#,Wpf,每当线程池线程中发生异常时。我想我应该引发一个UI线程将响应的事件。但我需要传递异常消息。有人能给我一些建议吗?如果您已经在线程中处理了异常,您可以在catch块中使用错误消息,并将其发送给UI线程的调度程序 如果已经在线程中处理了异常,则可以在catch块中使用错误消息并将其发送给UI线程的调度程序 您可以通过以下事件在应用程序域中查看未处理的异常: Application.Current.DispatcherUnhandledException += Current_DispatcherUn

每当线程池线程中发生异常时。我想我应该引发一个UI线程将响应的事件。但我需要传递异常消息。有人能给我一些建议吗?

如果您已经在线程中处理了异常,您可以在catch块中使用错误消息,并将其发送给UI线程的调度程序

如果已经在线程中处理了异常,则可以在catch块中使用错误消息并将其发送给UI线程的调度程序

您可以通过以下事件在应用程序域中查看未处理的异常:

Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
但是最好将线程包装在一个try-catch中,并手动将异常封送回UI线程。如果您有对Dispatcher的引用,则可以使用该引用将异常传递回UI线程。如果您正在使用TPL,有更简单的方法,但要手动执行,您可以执行以下操作:

_dispatcher = Dispatcher.CurrentDispatcher;
在启动后台线程之前,将对调度程序的引用保存在后台线程能够访问的地方

private void FailedWorking(Exception ex)
{
    _dispatcher.BeginInvoke(DispatcherPriority.Normal, (NotifyWorkerFailed)_notifyFailedMethod, ex);
}
然后,当您想要在UI线程上引发异常时,请使用Dispatcher.BeginInvoke并向其传递一个将处理异常的委托方法,或者您可以创建一个引发异常的操作


您可以在搜索中找到大量其他示例,您只需在应用程序域中观察事件中未处理的异常:

Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
但是最好将线程包装在一个try-catch中,并手动将异常封送回UI线程。如果您有对Dispatcher的引用,则可以使用该引用将异常传递回UI线程。如果您正在使用TPL,有更简单的方法,但要手动执行,您可以执行以下操作:

_dispatcher = Dispatcher.CurrentDispatcher;
在启动后台线程之前,将对调度程序的引用保存在后台线程能够访问的地方

private void FailedWorking(Exception ex)
{
    _dispatcher.BeginInvoke(DispatcherPriority.Normal, (NotifyWorkerFailed)_notifyFailedMethod, ex);
}
然后,当您想要在UI线程上引发异常时,请使用Dispatcher.BeginInvoke并向其传递一个将处理异常的委托方法,或者您可以创建一个引发异常的操作


您可以在搜索时找到大量其他示例

您是否尝试过DispatcherUnandledException?您是否尝试过DispatcherUnandledException?