Lingua

TplExtensions.NoThrowAwaitable Metodo

Definizione

Overload

Nome Descrizione
NoThrowAwaitable(Task, Boolean)

Restituisce un oggetto awaitable per l'attività specificata che non verrà mai generata, anche se l'attività di origine ha errori o viene annullata.

NoThrowAwaitable(ValueTask, Boolean)

Restituisce un oggetto awaitable per l'attività specificata che non verrà mai generata, anche se l'attività di origine ha errori o viene annullata.

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

Restituisce un oggetto awaitable per l'attività specificata che non verrà mai generata, anche se l'attività di origine ha errori o viene annullata.

NoThrowAwaitable(Task, Boolean)

Restituisce un oggetto awaitable per l'attività specificata che non verrà mai generata, anche se l'attività di origine ha errori 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.

Valori restituiti

Un oggetto awaitable.

Si applica a

NoThrowAwaitable(ValueTask, Boolean)

Restituisce un oggetto awaitable per l'attività specificata che non verrà mai generata, anche se l'attività di origine ha errori 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.

Valori restituiti

Un oggetto awaitable.

Si applica a

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

Restituisce un oggetto awaitable per l'attività specificata che non verrà mai generata, anche se l'attività di origine ha errori 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.

Valori restituiti

Un oggetto awaitable.

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