Dispatcher 類別

定義

提供管理執行緒之工作項目佇列的服務。

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 。 為了讓背景執行緒存取 ContentButton 屬性,背景執行緒必須將工作委派給 Dispatcher 與 UI 執行緒相關聯的 。 這是使用 InvokeBeginInvoke 來完成。 Invoke 是同步的,而且 BeginInvoke 是非同步。 作業會新增至位於指定 DispatcherPriority 之 的 Dispatcher 佇列。

如果在 BeginInvoke 已關閉的 上 Dispatcher 呼叫 ,則傳 DispatcherOperation 回的狀態屬性會設定為 Aborted

Dispatcher 的所有方法,但 除外 DisableProcessing ,都是自由執行緒。

衍生自 DispatcherObject 的物件具有線程親和性。

衍生自 Freezable 的物件會在凍結時自由執行緒。 如需詳細資訊,請參閱 Freezable 物件概觀

屬性

CurrentDispatcher

取得目前執行之執行緒的 Dispatcher 並建立新的 Dispatcher (如果尚未與執行緒產生關聯)。

HasShutdownFinished

判斷 Dispatcher 是否已完成關閉程序。

HasShutdownStarted

判斷 Dispatcher 是否已關閉。

Hooks

取得提供 Dispatcher 額外事件資訊的攔截集合。

Thread

取得與這個 Dispatcher 關聯的執行緒。

方法

BeginInvoke(Delegate, DispatcherPriority, Object[])

在其中有建立 Dispatcher 的執行緒上,依據指定的優先順序,使用指定的引數非同步地執行指定的委派。

BeginInvoke(Delegate, Object[])

在其中有建立 Dispatcher 的執行緒上,使用指定的引數非同步地執行指定的委派。

BeginInvoke(DispatcherPriority, Delegate)

Dispatcher 關聯的執行緒上使用指定優先權以非同步方式執行指定的委派。

BeginInvoke(DispatcherPriority, Delegate, Object)

Dispatcher 關聯的執行緒上使用指定優先權和指定引數以非同步方式執行指定的委派。

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Dispatcher 關聯的執行緒上使用指定優先權和指定引數陣列以非同步方式執行指定的委派。

BeginInvokeShutdown(DispatcherPriority)

以非同步方式初始化 Dispatcher 的關閉程序。

CheckAccess()

判斷呼叫的執行緒是否為與這個 Dispatcher 關聯的執行緒。

DisableProcessing()

停用 Dispatcher 佇列的處理。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
ExitAllFrames()

會要求結束所有框架,包括巢狀框架。

FromThread(Thread)

取得指定執行緒的 Dispatcher

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
Invoke(Action)

在與 Action 相關聯的執行緒上,同步執行指定的 Dispatcher

Invoke(Action, DispatcherPriority)

在與 Action 相關聯的執行緒上使用指定優先權同步執行指定的 Dispatcher

Invoke(Action, DispatcherPriority, CancellationToken)

在與 Action 相關聯的執行緒上使用指定優先權同步執行指定的 Dispatcher

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

在與 Action 相關聯的執行緒上使用指定優先權同步執行指定的 Dispatcher

Invoke(Delegate, DispatcherPriority, Object[])

Dispatcher 關聯的執行緒上使用指定優先權和指定引數以同步方式執行指定的委派。

Invoke(Delegate, Object[])

在與 Dispatcher 相關聯的執行緒上,使用指定的引數同步地執行指定的委派。

Invoke(Delegate, TimeSpan, DispatcherPriority, Object[])

在與 Dispatcher 有關聯的執行緒上,在指定的時間範圍內依據指定優先順序,使用指定之引數同步地執行指定的委派。

Invoke(Delegate, TimeSpan, Object[])

在與 Dispatcher 有關聯的執行緒上,在指定的時間範圍內依據指定優先順序,使用指定之引數同步地執行指定的委派。

Invoke(DispatcherPriority, Delegate)

在相關聯的執行緒 Dispatcher 上,以指定的優先權同步執行指定的委派。

Invoke(DispatcherPriority, Delegate, Object)

Dispatcher 關聯的執行緒上使用指定優先權和指定引數以同步方式執行指定的委派。

Invoke(DispatcherPriority, Delegate, Object, Object[])

Dispatcher 關聯的執行緒上使用指定優先權和指定引數以同步方式執行指定的委派。

Invoke(DispatcherPriority, TimeSpan, Delegate)

在建立 Dispatcher 的執行緒上使用指定優先權和指定逾時值以同步方式執行指定的委派。

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Dispatcher 關聯的執行緒上使用指定優先權和指定引數以同步方式執行指定的委派。

Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[])

Dispatcher 關聯的執行緒上使用指定優先權和指定引數以同步方式執行指定的委派。

Invoke<TResult>(Func<TResult>)

在與 Func<TResult> 相關聯的執行緒上,同步執行指定的 Dispatcher

Invoke<TResult>(Func<TResult>, DispatcherPriority)

在與 Func<TResult> 相關聯的執行緒上使用指定優先權同步執行指定的 Dispatcher

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

在與 Func<TResult> 相關聯的執行緒上使用指定優先權同步執行指定的 Dispatcher

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan)

在與 Func<TResult> 相關聯的執行緒上使用指定優先權同步執行指定的 Dispatcher

InvokeAsync(Action)

在與 Action 相關聯的執行緒上,以非同步方式執行指定的 Dispatcher

InvokeAsync(Action, DispatcherPriority)

在與 Action 相關聯的執行緒上使用指定優先權以非同步方式執行指定的 Dispatcher

InvokeAsync(Action, DispatcherPriority, CancellationToken)

在與 Action 相關聯的執行緒上使用指定優先權以非同步方式執行指定的 Dispatcher

InvokeAsync<TResult>(Func<TResult>)

在與 Func<TResult> 相關聯的執行緒上,以非同步方式執行指定的 Dispatcher

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority)

在與 Func<TResult> 相關聯的執行緒上使用指定優先權以非同步方式執行指定的 Dispatcher

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

在與 Func<TResult> 相關聯的執行緒上使用指定優先權以非同步方式執行指定的 Dispatcher

InvokeShutdown()

以同步方式初始化 Dispatcher 的關閉程序。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
PushFrame(DispatcherFrame)

會進入執行迴圈。

Run()

推入 Dispatcher 事件佇列上的主執行框架。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
ValidatePriority(DispatcherPriority, String)

判斷指定的 DispatcherPriority 是否為有效的優先權。

VerifyAccess()

判斷呼叫的執行是否可以存取這個 Dispatcher

Yield()

建立 awaitable 物件,這個物件會以非同步方式讓出控制權給目前的發送器,並提供機會給發送器以處理其他事件。

Yield(DispatcherPriority)

建立 awaitable 物件,這個物件會以非同步方式讓出控制權給目前的發送器,並提供機會給發送器以處理其他事件。 在控制權回到等候此方法之結果的程式碼時進行的工作會以指定的優先權來排定。

事件

ShutdownFinished

發生於 Dispatcher 完成關閉時。

ShutdownStarted

發生於 Dispatcher 開始關閉時。

UnhandledException

發生於當擲回執行緒例外狀況且透過 InvokeBeginInvoke 執行委派期間無法攔截時。

UnhandledExceptionFilter

發生於在篩選階段擲回執行緒例外狀況且透過 InvokeBeginInvoke 執行委派期間無法攔截時。

擴充方法

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 所建立的執行緒上,以同步方式,根據特定優先權,執行指定的委派。

適用於

另請參閱