[英]Is calling await multiple time on the same task bad for performance
在已經等待的任務上調用await是不好的做法嗎? 對性能不好嗎?
class SomeClass
{
string Prop1;
string Prop2;
}
public void SomeMethod()
{
Task<SomeClass>[] someClassInstanceTasks = Task<SomeClass>[10];
foreach(var task in someClassInstanceTasks)
{
task = GetSomeClassInstanceAsync();
}
someClassInstanceTasks.WaitAll();
SomeClass someClassInstance = someClassInstanceTasks[0].Result;
//OR (which is recommended)
SomeClass someClassInstance = await someClassInstanceTasks[0];
}
就個人而言,我更喜歡使用await方法作為額外的保護措施,以防萬一有人引入了錯誤並混入了WaitAll()語句。
在您的特定情況下,我只會使用.Result
。 沒有理由await
完成的Task
來獲得結果。 但是,有一個原因使您不想await
已完成的Task
,僅僅是因為您需要將方法標記為async
,這會導致您標記所有調用該方法的async
方法,或者必須實現TaskCompletion
,這是TaskCompletion
,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.