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) では、2 つのパラメーターを受け取ります。優先度は、設定されている 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 取得を試み、a Dispatcher がスレッドに関連付けられていない場合は、a Dispatcher が作成されます。 を作成すると、A Dispatcher も作成されます DispatcherObject。 バックグラウンド スレッドで a を Dispatcher 作成する場合は、スレッドを終了する前にディスパッチャーをシャットダウンしてください。
シャットダウン Dispatcher した場合は、再起動できません。
WPF では、 DispatcherObject 関連付けられているユーザーのみが Dispatcher アクセスできます。 たとえば、バックグラウンド スレッドでは、UI スレッドに関連付けられているコンテンツ Button を Dispatcher 更新できません。 バックグラウンド スレッドがプロパティ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 が関連付けられているスレッドを取得します。 |
メソッド
events
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 が作成されたスレッドで、指定したデリゲートを指定した優先順位で同期的に実行します。 |