Hans 和我最近就这个主题进行了一些小讨论,我很好奇它是如何真正实现的。
请参阅此处评论中的初始讨论:C# 计时器是否自然是多线程的?
盯着 .Net 4.0 参考源,System.Timers.Timer
似乎使用 aSystem.Threading.Timer
来处理实际的实现细节。后者通过调用生成计时器AddTimerNative
。 AddTimerNative
是内部调用。
谷歌搜索AddTimerNative
导致了很多有趣的结果,包括Willy Denoyette的评论,他说它调用了 CreateTimerQueueTimer。
该页面声明“回调函数排队到线程池。”
好吧,我做了一些调查......详细信息在我的博客文章中
简而言之,从那里总结一下: