对已经等待的任务调用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];
}
就个人而言,我更喜欢等待方法作为额外的保护措施,以防有人引入错误并使用WaitAll()声明。
答案 0 :(得分:2)
在您的具体案例中,我只会使用.Result
。没有理由await
在完成的Task
上获得结果。但是,有一个原因是您不希望await
完成Task
,只是因为您需要标记您的方法async
,这将导致您标记所有调用那个async
的方法或者你必须实现TaskCompletion
的方法,这是很多努力没有收获,