Język

TplExtensions.NoThrowAwaitable Metoda

Definicja

Przeciążenia

Nazwa Opis
NoThrowAwaitable(Task, Boolean)

Zwraca oczekiwaną wartość dla określonego zadania, które nigdy nie zostanie zwrócone, nawet jeśli błędy zadania źródłowego lub zostaną anulowane.

NoThrowAwaitable(ValueTask, Boolean)

Zwraca oczekiwaną wartość dla określonego zadania, które nigdy nie zostanie zwrócone, nawet jeśli błędy zadania źródłowego lub zostaną anulowane.

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

Zwraca oczekiwaną wartość dla określonego zadania, które nigdy nie zostanie zwrócone, nawet jeśli błędy zadania źródłowego lub zostaną anulowane.

NoThrowAwaitable(Task, Boolean)

Zwraca oczekiwaną wartość dla określonego zadania, które nigdy nie zostanie zwrócone, nawet jeśli błędy zadania źródłowego lub zostaną anulowane.

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

Parametry

task
Task

Zadanie, którego ukończenie powinno sygnalizować ukończenie zwróconej oczekiwanej wartości.

captureContext
Boolean

jeśli zostanie ustawiona true kontynuacja, zostanie zaplanowana w kontekście obiektu wywołującego; false aby zawsze wykonywać kontynuację w puli wątków.

Zwraca

Oczekiwany.

Dotyczy

NoThrowAwaitable(ValueTask, Boolean)

Zwraca oczekiwaną wartość dla określonego zadania, które nigdy nie zostanie zwrócone, nawet jeśli błędy zadania źródłowego lub zostaną anulowane.

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

Parametry

task
ValueTask

Zadanie, którego ukończenie powinno sygnalizować ukończenie zwróconej oczekiwanej wartości.

captureContext
Boolean

jeśli zostanie ustawiona true kontynuacja, zostanie zaplanowana w kontekście obiektu wywołującego; false aby zawsze wykonywać kontynuację w puli wątków.

Zwraca

Oczekiwany.

Dotyczy

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

Zwraca oczekiwaną wartość dla określonego zadania, które nigdy nie zostanie zwrócone, nawet jeśli błędy zadania źródłowego lub zostaną anulowane.

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)

Parametry typu

TResult

Typ wyniku.

Parametry

task
ValueTask<TResult>

Zadanie, którego ukończenie powinno sygnalizować ukończenie zwróconej oczekiwanej wartości.

captureContext
Boolean

jeśli zostanie ustawiona true kontynuacja, zostanie zaplanowana w kontekście obiektu wywołującego; false aby zawsze wykonywać kontynuację w puli wątków.

Zwraca

Oczekiwany.

Uwagi

Oczekiwana wartość zwrócona przez tę metodę nie zapewnia dostępu do wyniku pomyślnego ukończenia ValueTask<TResult>. Aby oczekiwać bez zgłaszania i używać wynikowej wartości, może być używany następujący wzorzec:

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

Dotyczy