語言

TplExtensions.NoThrowAwaitable 方法

定義

多載

名稱 Description
NoThrowAwaitable(Task, Boolean)

回傳指定任務的 waitable,即使原始任務錯誤或被取消,也不會拋棄。

NoThrowAwaitable(ValueTask, Boolean)

回傳指定任務的 waitable,即使原始任務錯誤或被取消,也不會拋棄。

NoThrowAwaitable<TResult>(ValueTask<TResult>, Boolean)

回傳指定任務的 waitable,即使原始任務錯誤或被取消,也不會拋棄。

NoThrowAwaitable(Task, Boolean)

回傳指定任務的 waitable,即使原始任務錯誤或被取消,也不會拋棄。

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)

回傳指定任務的 waitable,即使原始任務錯誤或被取消,也不會拋棄。

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)

回傳指定任務的 waitable,即使原始任務錯誤或被取消,也不會拋棄。

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 以永遠執行執行緒池的續接。

傳回

一個等待的時刻。

備註

此方法返回的可等待值無法取得成功完成 ValueTask<TResult>的結果。 若要等待而不丟棄並使用所得值,可採用以下模式:

var methodValueTask = MethodAsync().Preserve();
await methodValueTask.NoThrowAwaitable(true);
if (methodValueTask.IsCompletedSuccessfully)
{
  var result = methodValueTask.Result;
}
else
{
  var exception = methodValueTask.AsTask().Exception.InnerException;
}

適用於