假设我有这段代码:
public void AAA()
{
BBB();
}
public async Task BBB()
{
await Task.Delay(10000);
}
恕我直言,在正常模式下,方法AAA
也应该是async
,这样主线程就可以继续工作而无需等待。
但我对这种情况有2个问题:
说上面的代码确实绑定一个帖子10秒是否正确? (我怀疑答案是肯定的,因为AAA不是异步的,因此没有注册继续)
如果是这样 - 我如何通过代码证明?
答案 0 :(得分:4)
说上面的代码确实将一个线程绑定10秒是否正确?
没有
AAA
调用BBB
,它会设置一个Task并立即返回。由于AAA
await
上没有BBB
,因此它也会立即返回。所以"你自己"线程没有束缚。
"实施" Task.Delay
本身使用计时器而不是阻塞线程,因此在任务期间任何线程池线程都没有被绑定。