Rumah >pembangunan bahagian belakang >C++ >Task.waitAll () vs Task.Whenall (): Bilakah saya harus menggunakan masing -masing dalam pengaturcaraan async?
Terokai perbezaan antara Task.WaitAll() dan Task.WhenAll() dalam pengaturcaraan tak segerak .NET
Dalam pengaturcaraan tak segerak .NET, adalah penting untuk memahami perbezaan antara Task.WaitAll()
dan Task.WhenAll()
dalam Async CTP. Kedua-dua kaedah ini mempunyai tujuan yang berbeza, dan ciri-cirinya juga mempengaruhi prestasi dan aliran kod anda.
Task.WaitAll()
Task.WaitAll()
ialah operasi menyekat yang menyekat urutan semasa sehingga semua tugasan dalam tatasusunan yang ditentukan selesai. Ini bermakna kaedah itu hanya akan kembali selepas setiap tugasan selesai, tidak kira berapa lama masa yang diambil.
Task.WhenAll()
Sebaliknya, Task.WhenAll()
mengembalikan contoh Task
yang mewakili penyempurnaan semua tugasan dalam tatasusunan yang ditentukan. Ini bermakna kaedah itu tidak menyekat utas semasa tetapi terus melaksanakan baris kod seterusnya. Task
yang dikembalikan akan selesai apabila semua tugasan input telah selesai.
Bila hendak menggunakan yang mana?
Pilihan antara Task.WaitAll()
atau Task.WhenAll()
bergantung pada keperluan khusus kod anda. Berikut ialah beberapa kes penggunaan dunia sebenar:
Bila hendak menggunakan Task.WaitAll():
Bila hendak menggunakan Task.WhenAll():
await
). Contoh Kod
Pertimbangkan coretan kod berikut untuk menggambarkan kes penggunaan yang berbeza:
<code class="language-csharp">// 使用 Task.WaitAll() 等待任务 var tasks = new[] { Task.Delay(1000), Task.Delay(2000), Task.Delay(3000) }; Task.WaitAll(tasks); // 阻塞当前线程,直到所有任务完成 // 使用 Task.WhenAll() 创建延续任务 var tasks = new[] { Task.Delay(1000), Task.Delay(2000), Task.Delay(3000) }; var continuationTask = Task.WhenAll(tasks); // 返回一个任务,当所有输入任务完成后该任务完成</code>
Atas ialah kandungan terperinci Task.waitAll () vs Task.Whenall (): Bilakah saya harus menggunakan masing -masing dalam pengaturcaraan async?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!