Поделиться через


TplExtensions.NoThrowAwaitable Метод

Определение

Перегрузки

NoThrowAwaitable(Task, Boolean)

Возвращает объект awaitable для конкретной задачи, который никогда не будет создан, даже в случае сбоя или отмены исходной задачи.

NoThrowAwaitable(ValueTask, Boolean)

Возвращает объект awaitable для конкретной задачи, который никогда не будет создан, даже в случае сбоя или отмены исходной задачи.

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

Возвращает объект awaitable для конкретной задачи, который никогда не будет создан, даже в случае сбоя или отмены исходной задачи.

NoThrowAwaitable(Task, Boolean)

Возвращает объект awaitable для конкретной задачи, который никогда не будет создан, даже в случае сбоя или отмены исходной задачи.

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

Параметры

task
Task

Задача, завершение которой должно сигнализировать о завершении возвращаемого ожидаемого объекта.

captureContext
Boolean

Значение , если для параметра задано true продолжение, будет запланировано в контексте вызывающего объекта; false чтобы всегда выполнять продолжение в пуле потоков.

Возвращаемое значение

Ожидающий.

Применяется к

NoThrowAwaitable(ValueTask, Boolean)

Возвращает объект awaitable для конкретной задачи, который никогда не будет создан, даже в случае сбоя или отмены исходной задачи.

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

Параметры

task
ValueTask

Задача, завершение которой должно сигнализировать о завершении возвращаемого ожидаемого объекта.

captureContext
Boolean

Значение , если для параметра задано true продолжение, будет запланировано в контексте вызывающего объекта; false чтобы всегда выполнять продолжение в пуле потоков.

Возвращаемое значение

Ожидающий.

Применяется к

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

Возвращает объект awaitable для конкретной задачи, который никогда не будет создан, даже в случае сбоя или отмены исходной задачи.

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)

Параметры типа

TResult

Тип результата.

Параметры

task
ValueTask<TResult>

Задача, завершение которой должно сигнализировать о завершении возвращаемого ожидаемого объекта.

captureContext
Boolean

Значение , если для параметра задано true продолжение, будет запланировано в контексте вызывающего объекта; false чтобы всегда выполнять продолжение в пуле потоков.

Возвращаемое значение

Ожидающий.

Комментарии

Ожидаемый объект, возвращаемый этим методом, не предоставляет доступ к результату успешного ValueTask<TResult>завершения . Для ожидания без создания и использования результирующего значения можно использовать следующий шаблон:

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

Применяется к