JoinableTaskFactory.Run Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
Run(Func<Task>) |
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird. |
Run(Func<Task>, JoinableTaskCreationOptions) |
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird. |
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions) |
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird. |
Run<T>(Func<Task<T>>) |
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird. |
Run(Func<Task>)
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird.
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))
Parameter
Hinweise
Jede vom Delegaten ausgelöste Ausnahme wird im ursprünglichen Typ an den Aufrufer dieser Methode zurückgegeben.
Wenn der Delegat aus einem ergebenden Await fortgesetzt wird, besteht das Standardverhalten darin, im ursprünglichen Kontext wie bei der Ausführung einer normalen asynchronen Methode fortzusetzen. Wenn sich der Aufrufer beispielsweise im Standard Threads befand, wird die Ausführung nach einem Await im Standard Thread fortgesetzt. Wenn er jedoch in einem Threadpoolthread gestartet wurde, wird er in einem Threadpoolthread fortgesetzt.
// 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).
});
Gilt für:
Run(Func<Task>, JoinableTaskCreationOptions)
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird.
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)
Parameter
- creationOptions
- JoinableTaskCreationOptions
Die JoinableTaskCreationOptions, die verwendet werden, um das Verhalten der Aufgabe zu ändern.
Gilt für:
Run<T>(Func<Task<T>>, JoinableTaskCreationOptions)
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird.
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
Typparameter
- T
Der Werttyp, der vom asynchronen Vorgang zurückgegebenen wird.
Parameter
- creationOptions
- JoinableTaskCreationOptions
Die JoinableTaskCreationOptions, die verwendet werden, um das Verhalten der Aufgabe zu ändern.
Gibt zurück
Das Ergebnis des von asyncMethod
zurückgegebenen Tasks.
Hinweise
Jede vom Delegaten ausgelöste Ausnahme wird im ursprünglichen Typ an den Aufrufer dieser Methode zurückgegeben.
Wenn der Delegat aus einem ergebenden Await fortgesetzt wird, besteht das Standardverhalten darin, im ursprünglichen Kontext wie bei der Ausführung einer normalen asynchronen Methode fortzusetzen. Wenn sich der Aufrufer beispielsweise im Standard Threads befand, wird die Ausführung nach einem Await im Standard Thread fortgesetzt. Wenn er jedoch in einem Threadpoolthread gestartet wurde, wird er in einem Threadpoolthread fortgesetzt.
// 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).
});
Gilt für:
Run<T>(Func<Task<T>>)
Führt die angegebene asynchrone Methode bis zum Abschluss aus, während der aufrufende Thread synchron blockiert wird.
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
Typparameter
- T
Der Werttyp, der vom asynchronen Vorgang zurückgegebenen wird.
Parameter
Gibt zurück
Das Ergebnis des von asyncMethod
zurückgegebenen Tasks.
Hinweise
Jede vom Delegaten ausgelöste Ausnahme wird im ursprünglichen Typ an den Aufrufer dieser Methode zurückgegeben.
Wenn der Delegat aus einem ergebenden Await fortgesetzt wird, besteht das Standardverhalten darin, im ursprünglichen Kontext wie bei der Ausführung einer normalen asynchronen Methode fortzusetzen. Wenn sich der Aufrufer beispielsweise im Standard Threads befand, wird die Ausführung nach einem Await im Standard Thread fortgesetzt. Wenn er jedoch in einem Threadpoolthread gestartet wurde, wird er in einem Threadpoolthread fortgesetzt.
Ein Beispiel finden Sie in der Run(Func<Task>) Überladungsdokumentation.