JoinableTaskFactory.Run メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Run(Func<Task>) |
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。 |
Run(Func<Task>, JoinableTaskCreationOptions) |
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。 |
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions) |
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。 |
Run<T>(Func<Task<T>>) |
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。 |
Run(Func<Task>)
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。
public:
void Run(Func<System::Threading::Tasks::Task ^> ^ asyncMethod);
public void Run (Func<System.Threading.Tasks.Task> asyncMethod);
member this.Run : Func<System.Threading.Tasks.Task> -> unit
Public Sub Run (asyncMethod As Func(Of Task))
パラメーター
注釈
デリゲートによってスローされた例外は、元の型でこのメソッドの呼び出し元に再スローされます。
デリゲートが復帰待機から再開すると、既定の動作は、通常の非同期メソッドの実行と同様に、元のコンテキストで再開されます。 たとえば、呼び出し元がメイン スレッド上にあった場合、メイン スレッドで待機した後に実行が再開されますが、スレッドプール スレッドで開始された場合は、スレッドプール スレッドで再開されます。
// On threadpool or Main thread, this method will block
// the calling thread until all async operations in the
// delegate complete.
joinableTaskFactory.Run(async delegate {
// still on the threadpool or Main thread as before.
await OperationAsync();
// still on the threadpool or Main thread as before.
await Task.Run(async delegate {
// Now we're on a threadpool thread.
await Task.Yield();
// still on a threadpool thread.
});
// Now back on the Main thread (or threadpool thread if that's where we started).
});
適用対象
Run(Func<Task>, JoinableTaskCreationOptions)
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。
public:
void Run(Func<System::Threading::Tasks::Task ^> ^ asyncMethod, Microsoft::VisualStudio::Threading::JoinableTaskCreationOptions creationOptions);
public void Run (Func<System.Threading.Tasks.Task> asyncMethod, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions);
member this.Run : Func<System.Threading.Tasks.Task> * Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions -> unit
Public Sub Run (asyncMethod As Func(Of Task), creationOptions As JoinableTaskCreationOptions)
パラメーター
- creationOptions
- JoinableTaskCreationOptions
タスクの動作のカスタマイズに使用する JoinableTaskCreationOptions。
適用対象
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions)
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。
public:
generic <typename T>
T Run(Func<System::Threading::Tasks::Task<T> ^> ^ asyncMethod, Microsoft::VisualStudio::Threading::JoinableTaskCreationOptions creationOptions);
public T Run<T> (Func<System.Threading.Tasks.Task<T>> asyncMethod, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions);
member this.Run : Func<System.Threading.Tasks.Task<'T>> * Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions -> 'T
Public Function Run(Of T) (asyncMethod As Func(Of Task(Of T)), creationOptions As JoinableTaskCreationOptions) As T
型パラメーター
- T
非同期操作によって返される値の型。
パラメーター
- creationOptions
- JoinableTaskCreationOptions
タスクの動作のカスタマイズに使用する JoinableTaskCreationOptions。
戻り値
によって asyncMethod
返されるタスクの結果。
注釈
デリゲートによってスローされた例外は、元の型でこのメソッドの呼び出し元に再スローされます。
デリゲートが復帰待機から再開すると、既定の動作は、通常の非同期メソッドの実行と同様に、元のコンテキストで再開されます。 たとえば、呼び出し元がメイン スレッド上にあった場合、メイン スレッドで待機した後に実行が再開されますが、スレッドプール スレッドで開始された場合は、スレッドプール スレッドで再開されます。
// On threadpool or Main thread, this method will block
// the calling thread until all async operations in the
// delegate complete.
joinableTaskFactory.Run(async delegate {
// still on the threadpool or Main thread as before.
await OperationAsync();
// still on the threadpool or Main thread as before.
await Task.Run(async delegate {
// Now we're on a threadpool thread.
await Task.Yield();
// still on a threadpool thread.
});
// Now back on the Main thread (or threadpool thread if that's where we started).
});
適用対象
Run<T>(Func<Task<T>>)
呼び出し元のスレッドを同期的にブロックしながら、指定した非同期メソッドを実行して完了します。
public:
generic <typename T>
T Run(Func<System::Threading::Tasks::Task<T> ^> ^ asyncMethod);
public T Run<T> (Func<System.Threading.Tasks.Task<T>> asyncMethod);
member this.Run : Func<System.Threading.Tasks.Task<'T>> -> 'T
Public Function Run(Of T) (asyncMethod As Func(Of Task(Of T))) As T
型パラメーター
- T
非同期操作によって返される値の型。
パラメーター
戻り値
によって asyncMethod
返されるタスクの結果。
注釈
デリゲートによってスローされた例外は、元の型でこのメソッドの呼び出し元に再スローされます。
デリゲートが復帰待機から再開すると、既定の動作は、通常の非同期メソッドの実行と同様に、元のコンテキストで再開されます。 たとえば、呼び出し元がメイン スレッド上にあった場合、メイン スレッドで待機した後に実行が再開されますが、スレッドプール スレッドで開始された場合は、スレッドプール スレッドで再開されます。
例については、 Run(Func<Task>) オーバーロードのドキュメントを参照してください。