Dispatcher 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供管理執行緒之工作項目佇列的服務。
public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
- 繼承
-
Dispatcher
範例
下列範例示範如何將作業 Dispatcher 放在 上。 如需此範例的完整原始程式碼,請參閱 具有Long-Running計算範例的單一線程應用程式。
首先,會建立接受無引數的委派。
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
接下來會 BeginInvoke(DispatcherPriority, Delegate) 呼叫 。 這個 呼叫會 BeginInvoke(DispatcherPriority, Delegate) 採用兩個參數:優先順序,其設定 DispatcherPriority.Normal 為 ,而回呼則是透過委派 NextPrimeDelegate
的實例傳入。
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
備註
會 Dispatcher 維護特定執行緒的工作專案排定優先順序佇列。
Dispatcher線上程上建立 時,即使 已關閉, Dispatcher 它也會變成唯 Dispatcher 一可以與執行緒相關聯的 。
如果您嘗試取得 CurrentDispatcher 目前線程的 ,而且 Dispatcher 與執行緒沒有關聯, Dispatcher 將會建立 。 Dispatcher當您建立 時也會建立 DispatcherObject 。 如果您在背景執行緒上建立 Dispatcher ,請務必先關閉發送器,再結束執行緒。
Dispatcher如果 已關閉,則無法重新開機。
在 WPF 中, DispatcherObject 只能由 Dispatcher 它相關聯的 存取。 例如,背景執行緒無法更新與 Dispatcher UI 執行緒上 相關聯的 內容 Button 。 為了讓背景執行緒存取 Content 的 Button 屬性,背景執行緒必須將工作委派給 Dispatcher 與 UI 執行緒相關聯的 。 這是使用 Invoke 或 BeginInvoke 來完成。 Invoke 是同步的,而且 BeginInvoke 是非同步。 作業會新增至位於指定 DispatcherPriority 之 的 Dispatcher 佇列。
如果在 BeginInvoke 已關閉的 上 Dispatcher 呼叫 ,則傳 DispatcherOperation 回的狀態屬性會設定為 Aborted 。
上 Dispatcher 的所有方法,但 除外 DisableProcessing ,都是自由執行緒。
衍生自 DispatcherObject 的物件具有線程親和性。
衍生自 Freezable 的物件會在凍結時自由執行緒。 如需詳細資訊,請參閱 Freezable 物件概觀。
屬性
CurrentDispatcher |
取得目前執行之執行緒的 Dispatcher 並建立新的 Dispatcher (如果尚未與執行緒產生關聯)。 |
HasShutdownFinished |
判斷 Dispatcher 是否已完成關閉程序。 |
HasShutdownStarted |
判斷 Dispatcher 是否已關閉。 |
Hooks |
取得提供 Dispatcher 額外事件資訊的攔截集合。 |
Thread |
取得與這個 Dispatcher 關聯的執行緒。 |
方法
事件
ShutdownFinished |
發生於 Dispatcher 完成關閉時。 |
ShutdownStarted |
發生於 Dispatcher 開始關閉時。 |
UnhandledException |
發生於當擲回執行緒例外狀況且透過 Invoke 或 BeginInvoke 執行委派期間無法攔截時。 |
UnhandledExceptionFilter |
發生於在篩選階段擲回執行緒例外狀況且透過 Invoke 或 BeginInvoke 執行委派期間無法攔截時。 |
擴充方法
BeginInvoke(Dispatcher, Action) |
在特定 Dispatcher 所建立的執行緒上,以非同步的方式,根據一般優先權執行指定的委派。 |
BeginInvoke(Dispatcher, Action, DispatcherPriority) |
在特定 Dispatcher 所建立的執行緒上,以非同步的方式,根據特定優先權,執行指定的委派。 |
Invoke(Dispatcher, Action) |
在特定 Dispatcher 所建立的執行緒上,以同步方式,根據一般優先權,執行指定的委派。 |
Invoke(Dispatcher, Action, TimeSpan) |
在特定 Dispatcher 所建立的執行緒上,以同步方式,執行指定的委派,並在指定逾時期間後停止執行。 |
Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority) |
在特定 Dispatcher 所建立的執行緒上,以同步方式,根據特定優先權,執行指定的委派,並於指定逾時期間後停止執行。 |
Invoke(Dispatcher, Action, DispatcherPriority) |
在特定 Dispatcher 所建立的執行緒上,以同步方式,根據特定優先權,執行指定的委派。 |