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) が呼び出されます。 のこの呼び出しは、2 つのパラメーターを受け取ります。優先度は に設定され、コールバックはデリゲート のインスタンスを介 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 DispatcherDispatcher 、 が作成されます。 は Dispatcher 、 を作成するときにも作成されます DispatcherObject 。 バックグラウンド スレッドで を作成する場合は、スレッドを終了する前にディスパッチ Dispatcher ャーをシャットダウンしてください。

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

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

BeginInvoke シャットダウンされた で が Dispatcher 呼び出された場合、返される の status プロパティは 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 が作成されたスレッドで、指定したデリゲートを指定した優先順位で同期的に実行します。

適用対象

こちらもご覧ください