2011-03-07 35 views
2

每當線程池線程發生異常時。我以爲我會提出一個UI線程會響應的事件。但我需要傳遞異常消息。有人可以給我一些想法做到這一點?WPF將異常消息從ThreadPool線程傳遞到UI

+0

您是否嘗試過DispatcherUnhandledException? – 2011-03-07 10:32:50

回答

0

如果您在線程中處理了異常,則可以在catch塊中使用錯誤消息並將其發送到UI線程的調度程序。

0

你可以只是看在與事件的應用程序域未處理的異常:

Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException; 
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 

但它可能會更好地包裝在一個嘗試捕捉線程和手動元帥的異常給UI線程。如果你有一個Dispatcher的引用,你可以使用它來將異常傳遞迴UI線程。還有更簡單的方法,如果你使用的是第三方物流,但這樣做手工,你會怎麼做:

​​

啓動後臺線程保存到調度員參考的地方,後臺線程將能夠訪問之前。

private void FailedWorking(Exception ex) 
{ 
    _dispatcher.BeginInvoke(DispatcherPriority.Normal, (NotifyWorkerFailed)_notifyFailedMethod, ex); 
} 

然後,當你想提高對UI線程使用Dispatcher.BeginInvoke,要麼把它傳遞一個委託方法將處理異常或者你可以只創建一個拋出

您可以將動作異常找到大量的其他示例在那裏搜索Dispatcher