JoinableTaskFactory.Run Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
Run(Func<Task>) |
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno. |
Run(Func<Task>, JoinableTaskCreationOptions) |
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno. |
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions) |
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno. |
Run<T>(Func<Task<T>>) |
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno. |
Run(Func<Task>)
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno.
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))
Parametry
Poznámky
Jakákoli výjimka vyvolaná delegátem je v původním typu přezvozena volajícímu této metody.
Když delegát obnoví z výnosné await, výchozí chování je pokračovat v původním kontextu jako běžné asynchronní metody provádění. Pokud byl například volající v hlavním vlákně, provádění se obnoví po čekání na hlavní vlákno; ale pokud se spustilo na vlákně fondu vláken, obnoví se ve vlákně fondu vláken.
// 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).
});
Platí pro
Run(Func<Task>, JoinableTaskCreationOptions)
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno.
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)
Parametry
- creationOptions
- JoinableTaskCreationOptions
Slouží JoinableTaskCreationOptions k přizpůsobení chování úkolu.
Platí pro
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions)
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno.
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
Parametry typu
- T
Typ hodnoty vrácené asynchronní operací.
Parametry
- creationOptions
- JoinableTaskCreationOptions
Slouží JoinableTaskCreationOptions k přizpůsobení chování úkolu.
Návraty
Výsledek úkolu vráceného nástrojem asyncMethod
.
Poznámky
Jakákoli výjimka vyvolaná delegátem je v původním typu přezvozena volajícímu této metody.
Když delegát obnoví z výnosné await, výchozí chování je pokračovat v původním kontextu jako běžné asynchronní metody provádění. Pokud byl například volající v hlavním vlákně, provádění se obnoví po čekání na hlavní vlákno; ale pokud se spustilo na vlákně fondu vláken, obnoví se ve vlákně fondu vláken.
// 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).
});
Platí pro
Run<T>(Func<Task<T>>)
Spustí zadanou asynchronní metodu k dokončení, zatímco synchronně blokuje volající vlákno.
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
Parametry typu
- T
Typ hodnoty vrácené asynchronní operací.
Parametry
Návraty
Výsledek úkolu vráceného nástrojem asyncMethod
.
Poznámky
Jakákoli výjimka vyvolaná delegátem je v původním typu přezvozena volajícímu této metody.
Když delegát obnoví z výnosné await, výchozí chování je pokračovat v původním kontextu jako běžné asynchronní metody provádění. Pokud byl například volající v hlavním vlákně, provádění se obnoví po čekání na hlavní vlákno; ale pokud se spustilo na vlákně fondu vláken, obnoví se ve vlákně fondu vláken.
Příklad najdete v Run(Func<Task>) dokumentaci k přetížení.