我做了一些阅读,并认为我已经掌握了关于 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:
public Task ProcessUploadedFile(FileInfo info, string contentType)
{
foreach (var something in someCollection)
DoSomething();
DoSomethingElse();
return DoMethodAsync();
}
我最初写的是前者,但不再看到添加等待的意义。如果我写后者,我会完成同样的事情,如果他们选择,这两种方法的调用者仍然可以使用 await 关键字,不是吗?
以上有什么不同吗?哪个更好”?