JoinableTaskFactory.Run Метод

Определение

Перегрузки

Run(Func<Task>, JoinableTaskCreationOptions)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

Run(Func<Task>)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

Run<T>(Func<Task<T>>)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

Run<T>(Func<Task<T>>, JoinableTaskCreationOptions)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

Run(Func<Task>, JoinableTaskCreationOptions)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

public:
 void Run(Func<System::Threading::Tasks::Task ^> ^ asyncMethod, Microsoft::VisualStudio::Threading::JoinableTaskCreationOptions creationOptions);
public void Run (Func<System.Threading.Tasks.Task> asyncMethod, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions);
member this.Run : Func<System.Threading.Tasks.Task> * Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions -> unit
Public Sub Run (asyncMethod As Func(Of Task), creationOptions As JoinableTaskCreationOptions)

Параметры

asyncMethod
Func<Task>

Выполняемый асинхронный метод.

creationOptions
JoinableTaskCreationOptions

Объект JoinableTaskCreationOptions, который используется для настройки поведения задачи.

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

Run(Func<Task>)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

public:
 void Run(Func<System::Threading::Tasks::Task ^> ^ asyncMethod);
public void Run (Func<System.Threading.Tasks.Task> asyncMethod);
member this.Run : Func<System.Threading.Tasks.Task> -> unit
Public Sub Run (asyncMethod As Func(Of Task))

Параметры

asyncMethod
Func<Task>

Выполняемый асинхронный метод.

Комментарии

Любое исключение, созданное делегатом, повторно создается в исходном типе для вызывающего этого метода.

Когда делегат возобновляется из ожидающего ожидания, поведение по умолчанию должно возобновляться в исходном контексте как обычное выполнение асинхронного метода. Например, если вызывающий объект находился в основном потоке, выполнение возобновляется после ожидания в основном потоке; но если он запущен в потоке ThreadPool, он возобновляется в потоке ThreadPool.

// On threadpool or Main thread, this method will block
// the calling thread until all async operations in the
// delegate complete.
joinableTaskFactory.Run(async delegate {
    // still on the threadpool or Main thread as before.
    await OperationAsync();
    // still on the threadpool or Main thread as before.
    await Task.Run(async delegate {
         // Now we're on a threadpool thread.
         await Task.Yield();
         // still on a threadpool thread.
    });
    // Now back on the Main thread (or threadpool thread if that's where we started).
});

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

Run<T>(Func<Task<T>>)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

public:
generic <typename T>
 T Run(Func<System::Threading::Tasks::Task<T> ^> ^ asyncMethod);
public T Run<T> (Func<System.Threading.Tasks.Task<T>> asyncMethod);
member this.Run : Func<System.Threading.Tasks.Task<'T>> -> 'T
Public Function Run(Of T) (asyncMethod As Func(Of Task(Of T))) As T

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

T

Тип значения, возвращаемого асинхронной операцией.

Параметры

asyncMethod
Func<Task<T>>

Выполняемый асинхронный метод.

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

T

Результат задачи, возвращенной asyncMethod .

Комментарии

Любое исключение, созданное делегатом, повторно создается в исходном типе для вызывающего этого метода.

Когда делегат возобновляется из ожидающего ожидания, поведение по умолчанию должно возобновляться в исходном контексте как обычное выполнение асинхронного метода. Например, если вызывающий объект находился в основном потоке, выполнение возобновляется после ожидания в основном потоке; но если он запущен в потоке ThreadPool, он возобновляется в потоке ThreadPool.

Пример см Run(Func<Task>) . в документации по перегрузке.

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

Run<T>(Func<Task<T>>, JoinableTaskCreationOptions)

Выполняет указанный асинхронный метод для завершения, одновременно синхронно блокируя вызывающий поток.

public:
generic <typename T>
 T Run(Func<System::Threading::Tasks::Task<T> ^> ^ asyncMethod, Microsoft::VisualStudio::Threading::JoinableTaskCreationOptions creationOptions);
public T Run<T> (Func<System.Threading.Tasks.Task<T>> asyncMethod, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions);
member this.Run : Func<System.Threading.Tasks.Task<'T>> * Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions -> 'T
Public Function Run(Of T) (asyncMethod As Func(Of Task(Of T)), creationOptions As JoinableTaskCreationOptions) As T

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

T

Тип значения, возвращаемого асинхронной операцией.

Параметры

asyncMethod
Func<Task<T>>

Выполняемый асинхронный метод.

creationOptions
JoinableTaskCreationOptions

Объект JoinableTaskCreationOptions, который используется для настройки поведения задачи.

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

T

Результат задачи, возвращенной asyncMethod .

Комментарии

Любое исключение, созданное делегатом, повторно создается в исходном типе для вызывающего этого метода.

Когда делегат возобновляется из ожидающего ожидания, поведение по умолчанию должно возобновляться в исходном контексте как обычное выполнение асинхронного метода. Например, если вызывающий объект находился в основном потоке, выполнение возобновляется после ожидания в основном потоке; но если он запущен в потоке ThreadPool, он возобновляется в потоке ThreadPool.

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