Sobes.tech
Junior — Middle

Фарқи истифодаи усулҳои 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 имкон медиҳад, ки интизори асинхронӣ бе бастани ҷараён анҷом дода шавад.