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))
參數
備註
委派擲回的任何例外狀況都會在其原始類型中重新擲回給這個方法的呼叫端。
當委派從產生等候繼續時,預設行為是在原始內容中繼續執行,就像一般異步方法執行一樣。 例如,如果呼叫端位於主線程上,在主線程上的 await 之後繼續執行;但在線程集區線程上啟動,它會在線程集區線程上繼續。
// 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
回之Task的結果。
備註
委派擲回的任何例外狀況都會在其原始類型中重新擲回給這個方法的呼叫端。
當委派從產生等候繼續時,預設行為是在原始內容中繼續執行,就像一般異步方法執行一樣。 例如,如果呼叫端位於主線程上,在主線程上的 await 之後繼續執行;但在線程集區線程上啟動,它會在線程集區線程上繼續。
// 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
回之Task的結果。
備註
委派擲回的任何例外狀況都會在其原始類型中重新擲回給這個方法的呼叫端。
當委派從產生等候繼續時,預設行為是在原始內容中繼續執行,就像一般異步方法執行一樣。 例如,如果呼叫端位於主線程上,在主線程上的 await 之後繼續執行;但在線程集區線程上啟動,它會在線程集區線程上繼續。
如需範例, Run(Func<Task>) 請參閱多載檔。