簡體   English   中英

在同一任務上多次調用等待會降低性能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM