【发布时间】:2013-08-06 09:03:58
【问题描述】:
我已经阅读了一些内容,并且认为我已经掌握了关于 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 关键字,不是吗?
上面有什么不同吗?哪个“更好”?
【问题讨论】:
标签: .net task-parallel-library async-await