Condividi tramite


TplExtensions.NoThrowAwaitable Metodo

Definizione

Overload

NoThrowAwaitable(Task, Boolean)

Restituisce un awaitable per l'attività specificata che non si genera mai, anche se l'attività di origine va in errore o viene annullata.

NoThrowAwaitable(ValueTask, Boolean)

Restituisce un awaitable per l'attività specificata che non si genera mai, anche se l'attività di origine va in errore o viene annullata.

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

Restituisce un awaitable per l'attività specificata che non si genera mai, anche se l'attività di origine va in errore o viene annullata.

NoThrowAwaitable(Task, Boolean)

Restituisce un awaitable per l'attività specificata che non si genera mai, anche se l'attività di origine va in errore o viene annullata.

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

Parametri

task
Task

Attività il cui completamento deve segnalare il completamento dell'oggetto awaitable restituito.

captureContext
Boolean

se impostato sulla true continuazione verrà pianificato nel contesto del chiamante; false per eseguire sempre la continuazione nel pool di thread.

Restituisce

Un in attesa.

Si applica a

NoThrowAwaitable(ValueTask, Boolean)

Restituisce un awaitable per l'attività specificata che non si genera mai, anche se l'attività di origine va in errore o viene annullata.

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

Parametri

task
ValueTask

Attività il cui completamento deve segnalare il completamento dell'oggetto awaitable restituito.

captureContext
Boolean

se impostato sulla true continuazione verrà pianificato nel contesto del chiamante; false per eseguire sempre la continuazione nel pool di thread.

Restituisce

Un in attesa.

Si applica a

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

Restituisce un awaitable per l'attività specificata che non si genera mai, anche se l'attività di origine va in errore o viene annullata.

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)

Parametri di tipo

TResult

Tipo del risultato.

Parametri

task
ValueTask<TResult>

Attività il cui completamento deve segnalare il completamento dell'oggetto awaitable restituito.

captureContext
Boolean

se impostato sulla true continuazione verrà pianificato nel contesto del chiamante; false per eseguire sempre la continuazione nel pool di thread.

Restituisce

Un in attesa.

Commenti

L'oggetto awaitable restituito da questo metodo non fornisce l'accesso al risultato di un oggetto completato ValueTask<TResult>correttamente. Per attendere senza generare e usare il valore risultante, è possibile usare il modello seguente:

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

Si applica a