3

Task.Delay内部使用System.Threading.Timer。主要问题是System.Threading.Timer我的应用程序是非阻塞的?如果我做:

await Task.Delay(15)

下面的代码是否使用线程 15 毫秒?或者它会使用操作系统进行回调。在哪里可以找到有关此的信息?

4

1 回答 1

4

根据 Jeffrey Richter 的说法(第 748 页):

在内部,线程池只有一个线程用于所有 Timer 对象。该线程知道下一个 Timer 对象的时间到期。当下一个 Timer 对象到期时,线程唤醒,并在内部调用 ThreadPool 的 QueueUserWorkItem 以将条目输入到线程池的队列中,从而调用您的回调方法。

这意味着在执行计时器时您将至少有两个工作线程:一个 - 内部用于计时器,另一个 - 用于实际工作进程。

于 2013-01-13T19:21:33.190 回答