Udostępnij za pośrednictwem


TplExtensions.NoThrowAwaitable Metoda

Definicja

Przeciążenia

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 na kontynuację, zostanie zaplanowana w kontekście obiektu wywołującego, false aby zawsze wykonać kontynuację w puli wątków.

Zwraca

Oczekiwanie.

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 na kontynuację, zostanie zaplanowana w kontekście obiektu wywołującego, false aby zawsze wykonać kontynuację w puli wątków.

Zwraca

Oczekiwanie.

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 na kontynuację, zostanie zaplanowana w kontekście obiektu wywołującego, false aby zawsze wykonać kontynuację w puli wątków.

Zwraca

Oczekiwanie.

Uwagi

Oczekiwany element zwrócony przez tę metodę nie zapewnia dostępu do wyniku pomyślnego ukończenia ValueTask<TResult>. Aby poczekać bez zgłaszania i użyć wynikowej wartości, można użyć następującego wzorca:

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

Dotyczy