Фарқи истифодаи усулҳои WaitAll ва WhenAll дар барномасозии асинхронӣ чист?
sobes.tech AI
Ҷавоб аз AI
Методҳои WaitAll ва WhenAll дар C# барои интизор шудан ба анҷоми чандин вазифа истифода мешаванд, аммо фарқҳои муҳим доранд:
-
WaitAll — ин як методи синхронии синф
Taskаст, ки ҷараёни ҳозираро то анҷоми ҳамаи вазифаҳои додааш блок мекунад. Вай натиҷа намедиҳад ва интизори асинхронӣро дастгирӣ намекунад. -
WhenAll — як методи асинхрон аст, ки вазифаи анҷомёбашро вақте бармегардонад, ки ҳамаи вазифаҳои додааш ба анҷом расида бошанд. Он имкон медиҳад, ки бо истифода аз
awaitинтизор шудан бе бастани ҷараён, ки ин ба иҷро ва ҷавобгӯии барнома беҳбуди медиҳад.
Масалан истифодаи WhenAll:
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Ҳамаи вазифаҳо ба анҷом расиданд");
Истифодаи WaitAll:
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Ҳамаи вазифаҳо ба анҷом расиданд");
Фарқияти асосӣ дар он аст, ки WaitAll ҷараёнро блок мекунад, дар ҳоле ки WhenAll имкон медиҳад, ки интизори асинхронӣ бе бастани ҷараён анҷом дода шавад.