链式异步方法 - 绑定一个线程POV?

时间:2014-04-28 19:02:10

标签: c# async-await c#-5.0

假设我有这段代码:

public void AAA()
{    
    BBB(); 
}  

public async Task BBB() 
{ 
    await Task.Delay(10000); 
}  

恕我直言,在正常模式下,方法AAA也应该是async,这样主线程就可以继续工作而无需等待。

但我对这种情况有2个问题:

  1. 说上面的代码确实绑定一个帖子10秒是否正确? (我怀疑答案是肯定的,因为AAA不是异步的,因此没有注册继续)

  2. 如果是这样 - 我如何通过代码证明?

1 个答案:

答案 0 :(得分:4)

  

说上面的代码确实将一个线程绑定10秒是否正确?

没有

AAA调用BBB,它会设置一个Task并立即返回。由于AAA await上没有BBB,因此它也会立即返回。所以"你自己"线程没有束缚。

"实施" Task.Delay本身使用计时器而不是阻塞线程,因此在任务期间任何线程池线程都没有被绑定。