Dispatcher.BeginInvoke メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Dispatcherが関連付けられているスレッドで、デリゲートを非同期的に実行します。
オーバーロード
| 名前 | 説明 |
|---|---|
| BeginInvoke(Delegate, Object[]) |
Dispatcherが作成されたスレッドで、指定した引数を使用して、指定したデリゲートを非同期的に実行します。 |
| BeginInvoke(DispatcherPriority, Delegate) |
Dispatcherが関連付けられているスレッドで、指定したデリゲートを指定した優先度で非同期的に実行します。 |
| BeginInvoke(Delegate, DispatcherPriority, Object[]) |
指定した Dispatcher が作成されたスレッドで、指定した引数を指定した優先度で非同期的に実行します。 |
| BeginInvoke(DispatcherPriority, Delegate, Object) |
指定したデリゲートを、指定した優先度で非同期的に実行し、 Dispatcher が関連付けられているスレッドで指定した引数を指定します。 |
| BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
指定したデリゲートを、指定した優先順位で非同期的に実行し、 Dispatcher が関連付けられているスレッド上の引数の指定された配列を使用します。 |
注釈
WPF では、 DispatcherObject を作成したスレッドのみがそのオブジェクトにアクセスできます。 たとえば、メイン UI スレッドからスピンオフされたバックグラウンド スレッドは、UI スレッドで作成された Button の内容を更新できません。 バックグラウンド スレッドが Buttonの Content プロパティにアクセスするには、バックグラウンド スレッドが UI スレッドに関連付けられている Dispatcher に作業を委任する必要があります。 これは、 Invoke または BeginInvokeを使用して行います。 Invoke は同期であり、 BeginInvoke は非同期です。 操作は、指定したDispatcherPriorityのDispatcherのイベント キューに追加されます。
BeginInvoke は非同期です。したがって、コントロールは呼び出し後すぐに呼び出し元のオブジェクトに戻ります。
BeginInvoke は、デリゲートがイベント キュー内にある場合にデリゲートとの対話に使用できる DispatcherOperation オブジェクトを返します。
BeginInvokeによって返されるDispatcherOperation オブジェクトは、次のような、指定したデリゲートを操作するためにいくつかの方法で使用できます。
イベント キューでの実行が保留中であるデリゲートの DispatcherPriority を変更する。
イベント キューからのデリゲートの削除。
デリゲートが返されるのを待機しています。
デリゲートが実行された後に返される値を取得します。
同じDispatcherPriorityで複数のBeginInvoke呼び出しが行われる場合は、呼び出しが行われた順序で実行されます。
シャットダウンしたBeginInvokeでDispatcherが呼び出された場合、返されるDispatcherOperationの status プロパティはAbortedに設定されます。
BeginInvoke(Delegate, Object[])
Dispatcherが作成されたスレッドで、指定した引数を使用して、指定したデリゲートを非同期的に実行します。
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke(Delegate method, params object[] args);
member this.BeginInvoke : Delegate * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, ParamArray args As Object()) As DispatcherOperation
パラメーター
- method
- Delegate
argsで指定されたパラメーターを受け取るメソッドへのデリゲート。Dispatcher イベント キューにプッシュされます。
- args
- Object[]
指定されたメソッドに引数として渡すオブジェクトの配列。
null の可能性があります。
返品
BeginInvokeが呼び出された直後に返されるオブジェクト。このオブジェクトは、イベント キューでの実行が保留中であるため、デリゲートとの対話に使用できます。
注釈
BeginInvokeによって返されるDispatcherOperation オブジェクトは、次のような、指定したデリゲートを操作するためにいくつかの方法で使用できます。
イベント キューでの実行が保留中であるデリゲートの DispatcherPriority を変更する。
イベント キューからのデリゲートの削除。
デリゲートが返されるのを待機しています。
デリゲートが実行された後に返される値を取得します。
BeginInvoke は非同期です。したがって、コントロールは呼び出し後すぐに呼び出し元のオブジェクトに戻ります。
WPF では、 DispatcherObject を作成したスレッドのみがそのオブジェクトにアクセスできます。 たとえば、メイン UI スレッドからスピンオフされたバックグラウンド スレッドは、UI スレッドで作成された Button の内容を更新できません。 バックグラウンド スレッドが Buttonの Content プロパティにアクセスするには、バックグラウンド スレッドが UI スレッドに関連付けられている Dispatcher に作業を委任する必要があります。 これは、 Invoke または BeginInvokeを使用して行います。 Invoke は同期であり、 BeginInvoke は非同期です。 操作は、指定したDispatcherPriorityのDispatcherのイベント キューに追加されます。
シャットダウンしたBeginInvokeでDispatcherが呼び出された場合、返されるDispatcherOperationの status プロパティはAbortedに設定されます。
適用対象
BeginInvoke(DispatcherPriority, Delegate)
Dispatcherが関連付けられているスレッドで、指定したデリゲートを指定した優先度で非同期的に実行します。
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke(System.Windows.Threading.DispatcherPriority priority, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate) As DispatcherOperation
パラメーター
- priority
- DispatcherPriority
指定したメソッドが呼び出される、 Dispatcher イベント キュー内の他の保留中の操作を基準とした優先順位。
- method
- Delegate
引数を受け取っていないメソッドへのデリゲート。 Dispatcher イベント キューにプッシュされます。
返品
BeginInvokeが呼び出された直後に返されるオブジェクト。このオブジェクトは、イベント キューでの実行が保留中であるため、デリゲートとの対話に使用できます。
- 属性
例外
method は nullです。
priority は有効な DispatcherPriorityではありません。
例
次の例は、 Dispatcherに操作を配置する方法を示しています。 この例の完全なソース コードについては、「 Long-Running 計算サンプルSingle-Threaded アプリケーション」を参照してください。
最初に、引数を受け入れるデリゲートが作成されます。
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
次に、 BeginInvoke(DispatcherPriority, Delegate) が呼び出されます。 すべてのDispatcherObjectには、関連付けられているDispatcherを返すプロパティがあるため、必要なDispatcherは、DispatcherObject (この場合は startStopButton という名前のButton) を照会することによって取得されます。
BeginInvoke(DispatcherPriority, Delegate)の呼び出しは、DispatcherPriority.Normalに設定された優先度と、デリゲート NextPrimeDelegateのインスタンスを介して渡されるコールバックの 2 つのパラメーターを受け取ります。
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
注釈
同じDispatcherPriorityで複数のBeginInvoke呼び出しが行われる場合は、呼び出しが行われた順序で実行されます。
BeginInvoke は、デリゲートがイベント キュー内にある場合にデリゲートとの対話に使用できる DispatcherOperation オブジェクトを返します。
BeginInvokeによって返されるDispatcherOperation オブジェクトは、次のような、指定したデリゲートを操作するためにいくつかの方法で使用できます。
イベント キューでの実行が保留中であるデリゲートの DispatcherPriority を変更する。
イベント キューからのデリゲートの削除。
デリゲートが返されるのを待機しています。
デリゲートが実行された後に返される値を取得します。
BeginInvoke は非同期です。したがって、コントロールは呼び出し後すぐに呼び出し元のオブジェクトに戻ります。
WPF では、 DispatcherObject を作成したスレッドのみがそのオブジェクトにアクセスできます。 たとえば、メイン UI スレッドからスピンオフされたバックグラウンド スレッドは、UI スレッドで作成された Button の内容を更新できません。 バックグラウンド スレッドが Buttonの Content プロパティにアクセスするには、バックグラウンド スレッドが UI スレッドに関連付けられている Dispatcher に作業を委任する必要があります。 これは、 Invoke または BeginInvokeを使用して行います。 Invoke は同期であり、 BeginInvoke は非同期です。 操作は、指定したDispatcherPriorityのDispatcherのイベント キューに追加されます。
シャットダウンしたBeginInvokeでDispatcherが呼び出された場合、返されるDispatcherOperationの status プロパティはAbortedに設定されます。
こちらもご覧ください
適用対象
BeginInvoke(Delegate, DispatcherPriority, Object[])
指定した Dispatcher が作成されたスレッドで、指定した引数を指定した優先度で非同期的に実行します。
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(Delegate ^ method, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public System.Windows.Threading.DispatcherOperation BeginInvoke(Delegate method, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.BeginInvoke : Delegate * System.Windows.Threading.DispatcherPriority * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (method As Delegate, priority As DispatcherPriority, ParamArray args As Object()) As DispatcherOperation
パラメーター
- method
- Delegate
argsで指定されたパラメーターを受け取るメソッドへのデリゲート。Dispatcher イベント キューにプッシュされます。
- priority
- DispatcherPriority
指定したメソッドが呼び出される、 Dispatcher イベント キュー内の他の保留中の操作を基準とした優先順位。
- args
- Object[]
指定されたメソッドに引数として渡すオブジェクトの配列。
null の可能性があります。
返品
BeginInvokeが呼び出された直後に返されるオブジェクト。このオブジェクトは、イベント キューでの実行が保留中であるため、デリゲートとの対話に使用できます。
注釈
BeginInvokeによって返されるDispatcherOperation オブジェクトは、次のような、指定したデリゲートを操作するためにいくつかの方法で使用できます。
イベント キューでの実行が保留中であるデリゲートの DispatcherPriority を変更する。
イベント キューからのデリゲートの削除。
デリゲートが返されるのを待機しています。
デリゲートが実行された後に返される値を取得します。
BeginInvoke は非同期です。したがって、コントロールは呼び出し後すぐに呼び出し元のオブジェクトに戻ります。
WPF では、 DispatcherObject を作成したスレッドのみがそのオブジェクトにアクセスできます。 たとえば、メイン UI スレッドからスピンオフされたバックグラウンド スレッドは、UI スレッドで作成された Button の内容を更新できません。 バックグラウンド スレッドが Buttonの Content プロパティにアクセスするには、バックグラウンド スレッドが UI スレッドに関連付けられている Dispatcher に作業を委任する必要があります。 これは、 Invoke または BeginInvokeを使用して行います。 Invoke は同期であり、 BeginInvoke は非同期です。 操作は、指定したDispatcherPriorityのDispatcherのイベント キューに追加されます。
シャットダウンしたBeginInvokeでDispatcherが呼び出された場合、返されるDispatcherOperationの status プロパティはAbortedに設定されます。
適用対象
BeginInvoke(DispatcherPriority, Delegate, Object)
指定したデリゲートを、指定した優先度で非同期的に実行し、 Dispatcher が関連付けられているスレッドで指定した引数を指定します。
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke(System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object) As DispatcherOperation
パラメーター
- priority
- DispatcherPriority
指定したメソッドが呼び出される、 Dispatcher イベント キュー内の他の保留中の操作を基準とした優先順位。
- method
- Delegate
1 つの引数を受け取るメソッドへのデリゲート。 Dispatcher イベント キューにプッシュされます。
- arg
- Object
指定したメソッドに引数として渡すオブジェクト。
返品
BeginInvokeが呼び出された直後に返されるオブジェクト。このオブジェクトは、イベント キューでの実行が保留中であるため、デリゲートとの対話に使用できます。
- 属性
例外
method は nullです。
priority は有効な DispatcherPriorityではありません。
例
次の例は、 Dispatcherに操作を配置する方法を示しています。
まず、1 つの引数 (この場合は文字列) を受け取るデリゲートが作成されます。
private delegate void OneArgDelegate(String arg);
Private Delegate Sub OneArgDelegate(ByVal arg As String)
次に、 BeginInvoke(DispatcherPriority, Delegate, Object) が呼び出されます。 すべてのDispatcherObjectには、関連付けられているDispatcherを返すプロパティがあるため、必要なDispatcherは、DispatcherObject (この場合は tomorrowsWeather という名前のGrid) を照会することによって取得されます。
BeginInvoke(DispatcherPriority, Delegate, Object)の呼び出しは、DispatcherPriority.Normalに設定されている優先度、デリゲート OneArgDelegateのインスタンスを介して渡されるコールバック、およびコールバックの引数である weather という名前の文字列の 3 つのパラメーターを受け取ります。
// Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Normal,
new OneArgDelegate(UpdateUserInterface),
weather);
' Schedule the update function in the UI thread.
tomorrowsWeather.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, New OneArgDelegate(AddressOf UpdateUserInterface), weather)
注釈
arg は、引数が必要ない場合は null できます。
BeginInvoke は、デリゲートがイベント キュー内にある場合にデリゲートとの対話に使用できる DispatcherOperation オブジェクトを返します。
BeginInvokeによって返されるDispatcherOperation オブジェクトは、次のような、指定したデリゲートを操作するためにいくつかの方法で使用できます。
イベント キューでの実行が保留中であるデリゲートの DispatcherPriority を変更する。
イベント キューからのデリゲートの削除。
デリゲートが返されるのを待機しています。
デリゲートが実行された後に返される値を取得します。
BeginInvoke は非同期です。したがって、コントロールは呼び出し後すぐに呼び出し元のオブジェクトに戻ります。
WPF では、 DispatcherObject を作成したスレッドのみがそのオブジェクトにアクセスできます。 たとえば、メイン UI スレッドからスピンオフされたバックグラウンド スレッドは、UI スレッドで作成された Button の内容を更新できません。 バックグラウンド スレッドが Buttonのコンテンツ プロパティにアクセスするには、バックグラウンド スレッドが UI スレッドに関連付けられている Dispatcher に作業を委任する必要があります。 これは、 Invoke または BeginInvokeを使用して行います。 Invoke は同期であり、 BeginInvoke は非同期です。 操作は、指定したDispatcherPriorityのDispatcherのイベント キューに追加されます。
同じDispatcherPriorityで複数のBeginInvoke呼び出しが行われる場合は、呼び出しが行われた順序で実行されます。
シャットダウンしたBeginInvokeでDispatcherが呼び出された場合、返されるDispatcherOperationの status プロパティはAbortedに設定されます。
こちらもご覧ください
適用対象
BeginInvoke(DispatcherPriority, Delegate, Object, Object[])
指定したデリゲートを、指定した優先順位で非同期的に実行し、 Dispatcher が関連付けられているスレッド上の引数の指定された配列を使用します。
public:
System::Windows::Threading::DispatcherOperation ^ BeginInvoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public System.Windows.Threading.DispatcherOperation BeginInvoke(System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.BeginInvoke : System.Windows.Threading.DispatcherPriority * Delegate * obj * obj[] -> System.Windows.Threading.DispatcherOperation
Public Function BeginInvoke (priority As DispatcherPriority, method As Delegate, arg As Object, ParamArray args As Object()) As DispatcherOperation
パラメーター
- priority
- DispatcherPriority
指定したメソッドが呼び出される、 Dispatcher イベント キュー内の他の保留中の操作を基準とした優先順位。
- method
- Delegate
複数の引数を受け取るメソッドへのデリゲート。 Dispatcher イベント キューにプッシュされます。
- arg
- Object
指定したメソッドに引数として渡すオブジェクト。
- args
- Object[]
指定したメソッドに引数として渡すオブジェクトの配列。
返品
BeginInvokeが呼び出された直後に返されるオブジェクト。このオブジェクトは、Dispatcher キューでの実行が保留中であるため、デリゲートとの対話に使用できます。
- 属性
例外
method は nullです。
DispatcherPriority は有効な優先順位ではありません。
注釈
引数が必要ない場合は、 arg パラメーターを null できます。
BeginInvoke は、デリゲートがイベント キュー内にある場合にデリゲートとの対話に使用できる DispatcherOperation オブジェクトを返します。
BeginInvokeによって返されるDispatcherOperation オブジェクトは、次のような、指定したデリゲートを操作するためにいくつかの方法で使用できます。
イベント キューでの実行が保留中であるデリゲートの DispatcherPriority を変更する。
イベント キューからのデリゲートの削除。
デリゲートが返されるのを待機しています。
デリゲートが実行された後に返される値を取得します。
BeginInvoke は非同期です。したがって、コントロールは呼び出し後すぐに呼び出し元のオブジェクトに戻ります。
WPF では、 DispatcherObject を作成したスレッドのみがそのオブジェクトにアクセスできます。 たとえば、メイン UI スレッドからスピンオフされたバックグラウンド スレッドは、UI スレッドで作成された Button の内容を更新できません。 バックグラウンド スレッドが Buttonの Content プロパティにアクセスするには、バックグラウンド スレッドが UI スレッドに関連付けられている Dispatcher に作業を委任する必要があります。 これは、 Invoke または BeginInvokeを使用して行います。 Invoke は同期であり、 BeginInvoke は非同期です。 操作は、指定したDispatcherPriorityのDispatcherのイベント キューに追加されます。
同じDispatcherPriorityで複数のBeginInvoke呼び出しが行われる場合は、呼び出しが行われた順序で実行されます。
シャットダウンしたBeginInvokeでDispatcherが呼び出された場合、返されるDispatcherOperationの status プロパティはAbortedに設定されます。