【发布时间】:2016-08-09 02:26:30
【问题描述】:
我已经看到了await 关键字是如何实现的以及它创建的结果结构。我想我对它有一个初步的了解。然而,是
public async Task DoWork()
{
await this.Operation1Async();
await this.Operation2Async();
await this.Operation3Async();
}
“更好”(一般来说)或
public async Task DoWork()
{
await this.Operation1Async();
this.Operation2();
this.Operation3();
}
第一种方法的问题是它为每个等待调用创建一个新的Task?哪个需要一个新线程?
而第一个在第一个await 上创建一个新的Task,然后从那里开始的所有内容都在新的Task 中处理?
编辑 好吧,也许我不太清楚,但如果我们有
while (await reader.ReadAsync())
{
//...
}
await reader.NextResultAsync();
// ...
这不是创建两个任务吗?一个在主线程中使用第一个ReadAsync,然后在这个新创建的任务中使用NextResultAsync 进行另一个任务。我的问题是真的需要第二个任务,不是吗
在主线程中创建的一项任务就足够了吗?所以
while (await reader.ReadAsync())
{
//...
}
reader.NextResult();
// ...
【问题讨论】:
标签: c# asp.net-mvc asynchronous async-await