エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

Dispatcher クラス

スレッドの作業項目のキューを管理するためのサービスを提供します。

System.Object
  System.Windows.Threading.Dispatcher

名前空間:  System.Windows.Threading
アセンブリ:  WindowsBase (WindowsBase.dll 内)

public sealed class Dispatcher

Dispatcher 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック プロパティ静的メンバーCurrentDispatcher現在実行中のスレッドの Dispatcher を取得します。そのスレッドにディスパッチャーが関連付けられていない場合は、新しい Dispatcher を作成します。
パブリック プロパティHasShutdownFinished Dispatcher がシャットダウンを完了したかどうかを確認します。
パブリック プロパティHasShutdownStarted Dispatcher がシャットダウンしているかどうかを確認します。
パブリック プロパティHooks Dispatcher に関する追加イベント情報を提供するフックのコレクションを取得します。
パブリック プロパティThreadこの Dispatcher が関連付けられているスレッドを取得します。
このページのトップへ

  名前説明
パブリック メソッドBeginInvoke(Action)
パブリック メソッドBeginInvoke(Delegate, Object[]) Dispatcher が作成されたスレッドで、指定した引数で指定したデリゲートを非同期的に実行します。
パブリック メソッドBeginInvoke(DispatcherPriority, Delegate) Dispatcher が関連付けられているスレッドで、指定したデリゲートを指定した優先順位で非同期的に実行します。
パブリック メソッドBeginInvoke(Delegate, DispatcherPriority, Object[]) Dispatcher が作成されたスレッドで、指定した引数を使用して指定したデリゲートを、指定した優先順位で非同期に実行します。
パブリック メソッドBeginInvoke(DispatcherPriority, Delegate, Object) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で非同期的に実行します。
パブリック メソッドBeginInvoke(DispatcherPriority, Delegate, Object, Object[]) Dispatcher が関連付けられているスレッドで、指定した一連の引数を使用して、指定したデリゲートを指定した優先順位で非同期的に実行します。
パブリック メソッドBeginInvokeShutdown Dispatcher のシャットダウンを非同期的に開始します。
パブリック メソッドCheckAccess呼び出し元のスレッドがこの Dispatcher に関連付けられたスレッドであるかどうかを判断します。
パブリック メソッドDisableProcessing Dispatcher キューの処理を無効にします。
パブリック メソッドEquals(Object)指定のオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド静的メンバーExitAllFrames入れ子になったフレームを含むすべてのフレームを閉じるように要求します。
パブリック メソッド静的メンバーFromThread指定したスレッドの Dispatcher を取得します。
パブリック メソッドGetHashCode既定のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドInvoke(Action) Dispatcher が関連付けられているスレッドで、指定した Action を同期的に実行します。
パブリック メソッドInvoke(Action, DispatcherPriority) Dispatcher が関連付けられているスレッドで、指定した Action を指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(Delegate, Object[]) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを同期的に実行します。
パブリック メソッドInvoke(DispatcherPriority, Delegate) Dispatcher が関連付けられているスレッドで、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(Action, DispatcherPriority, CancellationToken) Dispatcher が関連付けられているスレッドで、指定した Action を指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(Delegate, TimeSpan, Object[]) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で、指定した期間内に同期的に実行します。
パブリック メソッドInvoke(Delegate, DispatcherPriority, Object[]) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(DispatcherPriority, Delegate, Object) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(DispatcherPriority, TimeSpan, Delegate) Dispatcher が作成されたスレッドで、指定したタイムアウトの値を使用して、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(Action, DispatcherPriority, CancellationToken, TimeSpan) Dispatcher が関連付けられているスレッドで、指定した Action を指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(Delegate, TimeSpan, DispatcherPriority, Object[]) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で、指定した期間内に同期的に実行します。
パブリック メソッドInvoke(DispatcherPriority, Delegate, Object, Object[]) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(DispatcherPriority, TimeSpan, Delegate, Object) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[]) Dispatcher が関連付けられているスレッドで、指定した引数を使用して、指定したデリゲートを指定した優先順位で同期的に実行します。
パブリック メソッドInvoke<TResult>(Func<TResult>) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を同期的に実行します。
パブリック メソッドInvoke<TResult>(Func<TResult>, DispatcherPriority) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を指定した優先順位で同期的に実行します。
パブリック メソッドInvoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を指定した優先順位で同期的に実行します。
パブリック メソッドInvoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を指定した優先順位で同期的に実行します。
パブリック メソッドInvokeAsync(Action) Dispatcher が関連付けられているスレッドで、指定した Action を非同期に実行します。
パブリック メソッドInvokeAsync(Action, DispatcherPriority) Dispatcher が関連付けられているスレッドで、指定した Action を指定した優先順位で非同期的に実行します。
パブリック メソッドInvokeAsync(Action, DispatcherPriority, CancellationToken) Dispatcher が関連付けられているスレッドで、指定した Action を指定した優先順位で非同期的に実行します。
パブリック メソッドInvokeAsync<TResult>(Func<TResult>) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を非同期に実行します。
パブリック メソッドInvokeAsync<TResult>(Func<TResult>, DispatcherPriority) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を指定した優先順位で非同期的に実行します。
パブリック メソッドInvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) Dispatcher が関連付けられているスレッドで、指定した Func<TResult> を指定した優先順位で同期的に実行します。
パブリック メソッドInvokeShutdown Dispatcher のシャットダウン プロセスを同期的に開始します。
パブリック メソッド静的メンバーPushFrame実行ループに入ります。
パブリック メソッド静的メンバーRunメイン実行フレームを Dispatcher のイベント キューにプッシュします。
パブリック メソッドToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッド静的メンバーValidatePriority指定した DispatcherPriority が有効な優先順位かどうかを判断します。
パブリック メソッドVerifyAccess呼び出し元のスレッドがこの Dispatcher にアクセスできるかどうかを確認します。
パブリック メソッド静的メンバーYield()現在のディスパッチャーに非同期的にコントロールを渡して他のイベントを処理する機会を提供する、待機可能オブジェクトを作成します。
パブリック メソッド静的メンバーYield(DispatcherPriority)現在のディスパッチャーに非同期的にコントロールを渡して他のイベントを処理する機会を提供する、待機可能オブジェクトを作成します。このメソッドの結果を待機するコードにコントロールが戻り、指定された優先度がスケジュールされたときに実行される処理。
このページのトップへ

  名前説明
パブリック イベントShutdownFinished Dispatcher がシャットダウンを完了すると発生します。
パブリック イベントShutdownStarted Dispatcher がシャットダウンを開始すると発生します。
パブリック イベントUnhandledException Invoke または BeginInvoke を使用したデリゲートの実行中にスローされたスレッドの例外をキャッチできないときに発生します。
パブリック イベントUnhandledExceptionFilterフィルター段階で Invoke または BeginInvoke を使用したデリゲートの実行中にスローされたスレッドの例外をキャッチできないときに発生します。
このページのトップへ

  名前説明
パブリック Extension メソッドBeginInvoke(Action)オーバーロードされます。 指定した Dispatcher が作成されたスレッドで、指定したデリゲートを通常の優先順位で非同期的に実行します。 (DispatcherExtensions によって定義されています。)
パブリック Extension メソッドBeginInvoke(Action, DispatcherPriority)オーバーロードされます。 指定した Dispatcher が作成されたスレッドで、指定したデリゲートを指定した優先順位で非同期的に実行します。 (DispatcherExtensions によって定義されています。)
パブリック Extension メソッドInvoke(Action)オーバーロードされます。 指定した Dispatcher が作成されたスレッドで、指定したデリゲートを通常の優先順位で同期的に実行します。 (DispatcherExtensions によって定義されています。)
パブリック Extension メソッドInvoke(Action, TimeSpan)オーバーロードされます。 指定した Dispatcher が作成されたスレッドで、指定したデリゲートを同期的に実行し、指定したタイムアウト時間が経過した後、実行を停止します。 (DispatcherExtensions によって定義されています。)
パブリック Extension メソッドInvoke(Action, DispatcherPriority)オーバーロードされます。 指定した Dispatcher が作成されたスレッドで、指定したデリゲートを指定した優先順位で同期的に実行します。 (DispatcherExtensions によって定義されています。)
パブリック Extension メソッドInvoke(Action, TimeSpan, DispatcherPriority)オーバーロードされます。 指定した Dispatcher が作成されたスレッドで、指定したデリゲートを指定した優先順位で同期的に実行し、指定したタイムアウト時間が経過した後、実行を停止します。 (DispatcherExtensions によって定義されています。)
このページのトップへ

Dispatcher は、特定のスレッドの作業項目の優先順位付きのキューを維持します。

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

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

Dispatcher は、シャットダウンされると再開できません。

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

シャットダウンした DispatcherBeginInvoke を呼び出すと、返された DispatcherOperation のステータス プロパティが Aborted に設定されます。

DisableProcessing を除く Dispatcher のすべてのメソッドはフリースレッドです。

DispatcherObject から派生するオブジェクトには、スレッドの関係があります。

Freezable から派生するオブジェクトを固定すると、フリースレッドになります。詳細については、「Freezable オブジェクトの概要」を参照してください。

Dispatcher に操作を渡す方法を次の例に示します。この例の完全なソース コードについては、計算を長時間実行するシングル スレッド アプリケーションのサンプルを参照してください。

まず、引数を受け入れないデリゲートを作成します。


public delegate void NextPrimeDelegate();


次に、BeginInvoke(DispatcherPriority, Delegate) を呼び出します。この BeginInvoke(DispatcherPriority, Delegate) の呼び出しには、DispatcherPriority.Normal に設定された優先順位と、デリゲート NextPrimeDelegate のインスタンスから渡されたコールバックの 2 つのパラメーターが指定されます。


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


.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5、3.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

コミュニティの追加

追加
表示:
© 2014 Microsoft