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) では、2 つのパラメーターを受け取ります。優先度は、設定されている DispatcherPriority.Normal優先順位と、デリゲート NextPrimeDelegateのインスタンスを介して渡されるコールバックです。

startStopButton.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,
    new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))

注釈

特定 Dispatcher のスレッドの作業項目の優先順位付けされたキューが保持されます。

Dispatcherスレッドで作成されると、シャットダウンされた場合でも、スレッドに関連付けることができる唯一DispatcherDispatcherスレッドになります。

現在のスレッドの CurrentDispatcher 取得を試み、a Dispatcher がスレッドに関連付けられていない場合は、a Dispatcher が作成されます。 を作成すると、A Dispatcher も作成されます DispatcherObject。 バックグラウンド スレッドで a を Dispatcher 作成する場合は、スレッドを終了する前にディスパッチャーをシャットダウンしてください。

シャットダウン Dispatcher した場合は、再起動できません。

WPF では、 DispatcherObject 関連付けられているユーザーのみが Dispatcher アクセスできます。 たとえば、バックグラウンド スレッドでは、UI スレッドに関連付けられているコンテンツ ButtonDispatcher 更新できません。 バックグラウンド スレッドがプロパティButtonにアクセスContentするには、バックグラウンド スレッドが UI スレッドに関連付けられている作業をDispatcher委任する必要があります。 これは、どちらかInvokeBeginInvokeを使用して実現されます。 Invoke は同期であり、 BeginInvoke 非同期です。 操作は、指定した位置にあるキューに Dispatcher 追加されます DispatcherPriority

シャットダウンした状態でDispatcher呼び出された場合BeginInvoke、返される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()

現在のディスパッチャーに非同期的にコントロールを渡して他のイベントを処理する機会を提供する、待機可能オブジェクトを作成します。

Yield(DispatcherPriority)

現在のディスパッチャーに非同期的にコントロールを渡して他のイベントを処理する機会を提供する、待機可能オブジェクトを作成します。 このメソッドの結果を待機するコードにコントロールが戻り、指定された優先度がスケジュールされたときに実行される処理。

イベント

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 が作成されたスレッドで、指定したデリゲートを指定した優先順位で同期的に実行します。

適用対象

こちらもご覧ください