Compartir a través de


TplExtensions.NoThrowAwaitable Método

Definición

Sobrecargas

NoThrowAwaitable(Task, Boolean)

Devuelve un awaitable para la tarea especificada que nunca se iniciará, aunque la tarea de origen produzca errores o se cancele.

NoThrowAwaitable(ValueTask, Boolean)

Devuelve un awaitable para la tarea especificada que nunca se iniciará, aunque la tarea de origen produzca errores o se cancele.

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

Devuelve un awaitable para la tarea especificada que nunca se iniciará, aunque la tarea de origen produzca errores o se cancele.

NoThrowAwaitable(Task, Boolean)

Devuelve un awaitable para la tarea especificada que nunca se iniciará, aunque la tarea de origen produzca errores o se cancele.

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 true en 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 esperado.

Se aplica a

NoThrowAwaitable(ValueTask, Boolean)

Devuelve un awaitable para la tarea especificada que nunca se iniciará, aunque la tarea de origen produzca errores o se cancele.

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 true en 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 esperado.

Se aplica a

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

Devuelve un awaitable para la tarea especificada que nunca se iniciará, aunque la tarea de origen produzca errores o se cancele.

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 true en 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 esperado.

Comentarios

El objeto awaitable devuelto por este método no proporciona acceso al resultado de una instrucción completada 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