Task.WaitAll blockiert den aktuellen Thread, bis die Ausführung aller anderen Aufgaben abgeschlossen ist. Mit der Methode
Task.WhenAll wird eine Aufgabe erstellt, die genau dann abgeschlossen wird, wenn alle anderen Aufgaben abgeschlossen sind. Im ersten Beispiel können wir sehen, dass bei Verwendung von Task.WhenAll der Aufgabenabschluss erfolgt, bevor andere Aufgaben abgeschlossen werden. Dies bedeutet, dass Task.WhenAll die Ausführung nicht blockiert. Im zweiten Beispiel können wir sehen, dass bei Verwendung von Task.WaitAll der Aufgabenabschluss erst dann ausgeführt wird, wenn alle anderen Aufgaben abgeschlossen sind. Das bedeutet, dass Task.WaitAll die Ausführung blockiert.
static void Main(string[] args){ Task task1 = new Task(() =>{ for (var i = 0; i < 5; i++){ Console.WriteLine("Task 1 - iteration {0}", i); Task.Delay(1000); } Console.WriteLine("Task 1 complete"); }); Task task2 = new Task(() =>{ for (var i = 0; i < 5; i++){ Console.WriteLine("Task 2 - iteration {0}", i); Task.Delay(1000); } Console.WriteLine("Task 2 complete"); }); task1.Start(); task2.Start(); Console.WriteLine("Waiting for tasks to complete."); Task.WhenAll(task1, task2); Console.WriteLine("Both Tasks Completed."); Console.ReadLine(); }
Waiting for tasks to complete. Both Tasks Completed. Task 1 - iteration 0 Task 2 - iteration 0 Task 2 - iteration 1 Task 2 - iteration 2 Task 2 - iteration 3 Task 1 - iteration 1 Task 1 - iteration 2 Task 1 - iteration 3 Task 1 - iteration 4 Task 1 complete Task 2 - iteration 4 Task 2 complete
static void Main(string[] args){ Task task1 = new Task(() =>{ for (var i = 0; i < 5; i++){ Console.WriteLine("Task 1 - iteration {0}", i); Task.Delay(1000); } Console.WriteLine("Task 1 complete"); }); Task task2 = new Task(() =>{ for (var i = 0; i < 5; i++){ Console.WriteLine("Task 2 - iteration {0}", i); Task.Delay(1000); } Console.WriteLine("Task 2 complete"); }); task1.Start(); task2.Start(); Console.WriteLine("Waiting for tasks to complete."); Task.WaitAll(task1, task2); Console.WriteLine("Both Tasks Completed."); Console.ReadLine(); }
Waiting for tasks to complete. Task 1 - iteration 0 Task 2 - iteration 0 Task 1 - iteration 1 Task 1 - iteration 2 Task 1 - iteration 3 Task 1 - iteration 4 Task 1 complete Task 2 - iteration 1 Task 2 - iteration 2 Task 2 - iteration 3 Task 2 - iteration 4 Task 2 complete Both Tasks Completed
Das obige ist der detaillierte Inhalt vonWie führe ich mehrere asynchrone Aufgaben in C# aus und warte, bis sie alle abgeschlossen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!