Bagaimana untuk menjalankan pelbagai tugas tak segerak dalam C# dan tunggu semuanya selesai?

PHPz
Lepaskan: 2023-08-27 11:17:07
ke hadapan
1325 orang telah melayarinya

如何在 C# 中运行多个异步任务并等待它们全部完成?

Task.WaitAllmenyekat urutan semasa sehingga semua tugasan lain selesai dilaksanakan. Kaedah

Task.WhenAlldigunakan untuk mencipta tugasan yang akan selesai jika dan hanya jika semua tugasan lain selesai. Dalam contoh pertama, kita dapat melihat bahawa apabila menggunakan Task.WhenAll, penyiapan tugasan dilaksanakan sebelum tugasan lain selesai. Ini bermakna Task.WhenAll tidak akan menyekat pelaksanaan. Dalam contoh kedua, kita dapat melihat bahawa apabila menggunakan Task.WaitAll, penyiapan tugas hanya dilaksanakan selepas semua tugasan lain selesai. Ini bermakna Task.WaitAll menyekat pelaksanaan.

Contoh

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(); }
Salin selepas log masuk

Output

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
Salin selepas log masuk

Contoh

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(); }
Salin selepas log masuk

Output

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
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menjalankan pelbagai tugas tak segerak dalam C# dan tunggu semuanya selesai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!