JoinableTaskFactory.Run Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Run(Func<Task>) |
Выполняет указанный асинхронный метод для завершения, синхронно блокируя вызывающий поток. |
Run(Func<Task>, JoinableTaskCreationOptions) |
Выполняет указанный асинхронный метод для завершения, синхронно блокируя вызывающий поток. |
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions) |
Выполняет указанный асинхронный метод для завершения, синхронно блокируя вызывающий поток. |
Run<T>(Func<Task<T>>) |
Выполняет указанный асинхронный метод для завершения, синхронно блокируя вызывающий поток. |
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))
Параметры
Комментарии
Все исключения, создаваемые делегатом, повторно передаются в исходном типе вызывающей объекту этого метода.
Когда делегат возобновляет работу с выходом await, по умолчанию возобновляется в исходном контексте, как обычное выполнение асинхронного метода. Например, если вызывающий объект был в потоке main, выполнение возобновляется после ожидания в потоке main, но если оно запущено в потоке пула потоков, оно возобновляется в потоке пула потоков.
// 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(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)
Параметры
- creationOptions
- JoinableTaskCreationOptions
Объект JoinableTaskCreationOptions, который используется для настройки поведения задачи.
Применяется к
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
Тип значения, возвращаемого асинхронной операцией.
Параметры
- creationOptions
- JoinableTaskCreationOptions
Объект JoinableTaskCreationOptions, который используется для настройки поведения задачи.
Возвращаемое значение
Результат задачи, возвращенный .asyncMethod
Комментарии
Все исключения, создаваемые делегатом, повторно передаются в исходном типе вызывающей объекту этого метода.
Когда делегат возобновляет работу с выходом await, по умолчанию возобновляется в исходном контексте, как обычное выполнение асинхронного метода. Например, если вызывающий объект был в потоке main, выполнение возобновляется после ожидания в потоке main, но если оно запущено в потоке пула потоков, оно возобновляется в потоке пула потоков.
// 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
Комментарии
Все исключения, создаваемые делегатом, повторно передаются в исходном типе вызывающей объекту этого метода.
Когда делегат возобновляет работу с выходом await, по умолчанию возобновляется в исходном контексте, как обычное выполнение асинхронного метода. Например, если вызывающий объект был в потоке main, выполнение возобновляется после ожидания в потоке main, но если оно запущено в потоке пула потоков, оно возобновляется в потоке пула потоков.
Пример см. в Run(Func<Task>) документации по перегрузке.