簡體   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