【发布时间】:2015-06-13 12:41:47
【问题描述】:
一些关于堆栈溢出的帖子提出了以下建议:
任何有一个等待表达式等待任务或任务
的异步方法,就在方法的末尾没有进一步处理,最好不使用异步/等待来编写。
此建议是否仅适用于特定情况?在 Web 服务器上,使用 async/await 不是主要原因之一,因为在等待下面的 UpdateDataAsync 方法时,Thread 将返回到 ThreadPool,允许服务器继续工作其他要求?
鉴于这是方法中的最后一次调用,SaveDataAsync 是否应该等待数据库更新调用?
public async Task WorkWithDataAsync(Data data)
{
ManipulateData(data);
await SaveDataAsync(data);
await SendDataSomewhereAsync(data);
}
public async Task SaveDataAsync(Data data)
{
FixData(data);
await DBConnection.UpdateDataAsync(data);
}
另外,鉴于您不知道将在哪里使用 SaveDataAsync,使其同步会损害像 WorkWithDataAsync 这样的方法,不是吗?
【问题讨论】:
标签: c# .net asynchronous async-await