我已经阅读了一些内容,认为我掌握了关于System.Threading.Task的await和async关键字的基础知识。
然而,有一个小问题我不确定是否正确,我希望找人验证或指正。
我正在实现一个带有如下签名的异步方法:
public Task ProcessUploadedFile(FileInfo info, string contentType);
显然,如果我想在方法内等待任何东西,我需要将async关键字添加到签名中。
我的问题是:如果我的方法最后要做的事情是调用另一个异步方法或返回一个任务,那么有必要等待它吗?
例如:
1:
public async Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
await DoMethodAsync();
}
2:
->2:
public Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
return DoMethodAsync();
}
我最初写了前者,但现在认为加上await没有意义。如果我写后者,可以实现相同的效果,并且两种方法的调用者仍然可以选择使用await关键字。
上述两种方法有什么区别?哪一个更好?