![](/img/trans.png)
[英]How do I pass information from a ThreadPool.QueueUserWorkItem back to the UI thread?
[英]WPF pass exception message from ThreadPool thread to UI
每当线程池线程中发生异常时。 我以为会引发UI线程会响应的事件。 但是我需要传递异常消息。 有人可以给我一些想法吗?
如果您已在线程中处理了异常,则可以在catch块中使用错误消息,并将其发送到UI线程的分派器。
您可以通过事件在应用程序域中监视未处理的异常:
Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
但是,最好将线程包装在try catch中,然后手动将异常封送回UI线程。 如果您有对Dispatcher的引用,则可以使用该引用将异常传递回UI线程。 如果您使用的是TPL,则有更简单的方法,但是要手动进行,您可以执行以下操作:
_dispatcher = Dispatcher.CurrentDispatcher;
在启动后台线程之前,请将对Dispatcher的引用保存在后台线程将能够访问的某个位置。
private void FailedWorking(Exception ex)
{
_dispatcher.BeginInvoke(DispatcherPriority.Normal, (NotifyWorkerFailed)_notifyFailedMethod, ex);
}
然后,当您想在UI线程上引发异常时,请使用Dispatcher.BeginInvoke并向其传递将处理异常的委托方法,或者您可以仅创建引发异常的Action。
您可以找到许多其他示例来查找Dispatcher
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.