![](/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.