繁体   English   中英

WPF将异常消息从ThreadPool线程传递到UI

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM