Lenguaje

TplExtensions.NoThrowAwaitable Método

Definición

Sobrecargas

Nombre Description
NoThrowAwaitable(Task, Boolean)

Devuelve un objeto awaitable para la tarea especificada que nunca se iniciará, incluso si se produce un error en la tarea de origen o se cancela.

NoThrowAwaitable(ValueTask, Boolean)

Devuelve un objeto awaitable para la tarea especificada que nunca se iniciará, incluso si se produce un error en la tarea de origen o se cancela.

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

Devuelve un objeto awaitable para la tarea especificada que nunca se iniciará, incluso si se produce un error en la tarea de origen o se cancela.

NoThrowAwaitable(Task, Boolean)

Devuelve un objeto awaitable para la tarea especificada que nunca se iniciará, incluso si se produce un error en la tarea de origen o se cancela.

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

Parámetros

task
Task

Tarea cuya finalización debe indicar la finalización de la espera devuelta.

captureContext
Boolean

si se establece en true la continuación se programará en el contexto del autor de la llamada; false para ejecutar siempre la continuación en el grupo de subprocesos.

Devoluciones

Un esperable.

Se aplica a

NoThrowAwaitable(ValueTask, Boolean)

Devuelve un objeto awaitable para la tarea especificada que nunca se iniciará, incluso si se produce un error en la tarea de origen o se cancela.

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

Parámetros

task
ValueTask

Tarea cuya finalización debe indicar la finalización de la espera devuelta.

captureContext
Boolean

si se establece en true la continuación se programará en el contexto del autor de la llamada; false para ejecutar siempre la continuación en el grupo de subprocesos.

Devoluciones

Un esperable.

Se aplica a

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

Devuelve un objeto awaitable para la tarea especificada que nunca se iniciará, incluso si se produce un error en la tarea de origen o se cancela.

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)

Parámetros de tipo

TResult

Tipo del resultado.

Parámetros

task
ValueTask<TResult>

Tarea cuya finalización debe indicar la finalización de la espera devuelta.

captureContext
Boolean

si se establece en true la continuación se programará en el contexto del autor de la llamada; false para ejecutar siempre la continuación en el grupo de subprocesos.

Devoluciones

Un esperable.

Comentarios

El objeto awaitable devuelto por este método no proporciona acceso al resultado de un objeto completado ValueTask<TResult>correctamente. Para esperar sin iniciar y usar el valor resultante, se puede usar el siguiente patrón:

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

Se aplica a