TplExtensions.NoThrowAwaitable 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
NoThrowAwaitable(Task, Boolean) |
傳回即使來源工作發生錯誤或已取消,也永不擲回指定之工作的 awaitable。 |
NoThrowAwaitable(ValueTask, Boolean) |
傳回即使來源工作發生錯誤或已取消,也永不擲回指定之工作的 awaitable。 |
NoThrowAwaitable<TResult>(ValueTask<TResult>, Boolean) |
傳回即使來源工作發生錯誤或已取消,也永不擲回指定之工作的 awaitable。 |
NoThrowAwaitable(Task, Boolean)
傳回即使來源工作發生錯誤或已取消,也永不擲回指定之工作的 awaitable。
public static Microsoft.VisualStudio.Threading.TplExtensions.NoThrowTaskAwaitable NoThrowAwaitable (this System.Threading.Tasks.Task task, bool captureContext = true);
static member NoThrowAwaitable : System.Threading.Tasks.Task * bool -> Microsoft.VisualStudio.Threading.TplExtensions.NoThrowTaskAwaitable
<Extension()>
Public Function NoThrowAwaitable (task As Task, Optional captureContext As Boolean = true) As TplExtensions.NoThrowTaskAwaitable
參數
- task
- Task
完成的工作應該會發出傳回可等候之 完成的訊號。
- captureContext
- Boolean
如果設定為 true
接續,將會排程在呼叫端的內容上;則為 , false
一律在線程集區上執行接續。
傳回
可等候的 。
適用於
NoThrowAwaitable(ValueTask, Boolean)
傳回即使來源工作發生錯誤或已取消,也永不擲回指定之工作的 awaitable。
public static Microsoft.VisualStudio.Threading.TplExtensions.NoThrowValueTaskAwaitable NoThrowAwaitable (this System.Threading.Tasks.ValueTask task, bool captureContext = true);
static member NoThrowAwaitable : System.Threading.Tasks.ValueTask * bool -> Microsoft.VisualStudio.Threading.TplExtensions.NoThrowValueTaskAwaitable
<Extension()>
Public Function NoThrowAwaitable (task As ValueTask, Optional captureContext As Boolean = true) As TplExtensions.NoThrowValueTaskAwaitable
參數
- task
- ValueTask
完成的工作應該會發出傳回可等候之 完成的訊號。
- captureContext
- Boolean
如果設定為 true
接續,將會排程在呼叫端的內容上;則為 , false
一律在線程集區上執行接續。
傳回
可等候的 。
適用於
NoThrowAwaitable<TResult>(ValueTask<TResult>, Boolean)
傳回即使來源工作發生錯誤或已取消,也永不擲回指定之工作的 awaitable。
public static Microsoft.VisualStudio.Threading.TplExtensions.NoThrowValueTaskAwaitable<TResult> NoThrowAwaitable<TResult> (this System.Threading.Tasks.ValueTask<TResult> task, bool captureContext = true);
static member NoThrowAwaitable : System.Threading.Tasks.ValueTask<'Result> * bool -> Microsoft.VisualStudio.Threading.TplExtensions.NoThrowValueTaskAwaitable<'Result>
<Extension()>
Public Function NoThrowAwaitable(Of TResult) (task As ValueTask(Of TResult), Optional captureContext As Boolean = true) As TplExtensions.NoThrowValueTaskAwaitable(Of TResult)
類型參數
- TResult
結果的類型。
參數
- task
- ValueTask<TResult>
完成的工作應該會發出傳回可等候之 完成的訊號。
- captureContext
- Boolean
如果設定為 true
接續,將會排程在呼叫端的內容上;則為 , false
一律在線程集區上執行接續。
傳回
可等候的 。
備註
這個方法所傳回的 awaitable 無法存取成功完成 ValueTask<TResult>的結果。 若要等候而不擲回並使用產生的值,可以使用下列模式:
var methodValueTask = MethodAsync().Preserve();
await methodValueTask.NoThrowAwaitable(true);
if (methodValueTask.IsCompletedSuccessfully)
{
var result = methodValueTask.Result;
}
else
{
var exception = methodValueTask.AsTask().Exception.InnerException;
}