% code% ist eine vereinfachte Version von Code, die auf einem UI-Thread ausgeführt wird (mit WindowsFormsSynchronizationContext ):
%Vor% Soll ich explizit Test_Click
angeben, um sicherzustellen, dass die Fortsetzungsaktion auf demselben UIhread ausgeführt wird? Oder nimmt TaskScheduler.FromCurrentSynchronizationContext()
den Ausführungskontext automatisch auf (wodurch ContinueWith
Argument in diesem Fall überflüssig wird)?
Ich nehme an, dass es das nicht standardmäßig macht (im Gegensatz zu TaskScheduler
), aber bis jetzt konnte ich keine Online-Ressource finden, um dies zu bestätigen.
Es verwendet standardmäßig nicht den aktuellen Synchronisationskontext, sondern TaskScheduler.Current
, wie im folgenden dekompilierten Code zu sehen ist:
TaskScheduler.Current
ist entweder TaskScheduler.Default
oder der TaskScheduler der aktuellen Aufgabe, wenn die Aufgabe eine untergeordnete Aufgabe ist. Geben Sie immer den Taskplaner an, wenn Sie nicht auf seltsame Probleme oder besser, verwenden Sie await
, wenn Sie können.
Tags und Links .net c# task-parallel-library async-await asynchronous