我可以创建多少个System.Timers.Timer实例?我可以扩展多远?

tst*_*ter 7 .net timer

我有一个应用程序,它使用System.Timers.Timer对象来进行过期和电子邮件通知等.目前该系统有一百个计时器同时存在,但我们将扩大应用程序的使用量,这个数字可能会开始扩展到数千(可能不高于10,000).

我找不到任何有关扩大计时器数量的信息,所以我认为它不会成为一个问题.有谁知道这是否会成为一个问题,我应该主动考虑改变我处理过期的方式?

Jim*_*hel 11

我知道,有点晚了,但是...

System.Timers.Timer是一个包装器System.Threading.Timer,它反过来是围绕Windows的计时器队列的.NET包装器.定时器队列定时器非常轻量级 - 使用很少的系统资源.我没有扩展到成千上万的计时器,但数百个计时器工作正常.从我能够收集到的实现中,我无法想象成千上万的定时器会有任何问题.

您可以在任何特定计时器队列中拥有的计时器数量有一些限制.我不知道那个限制是什么.当我在大约一年前调查这些计时器时,看起来.NET Framework每个进程创建一个计时器队列(或者可能是每个应用程序域),并且您创建的所有计时器都放入该队列中.

通过创建自己的系统来复制定时器队列功能可能没有意义,该系统使用单个定时器和某种类型的优先级队列机制来控制接下来要调用的内容.这就是计时器队列为你做的事情.

看起来您可以轻松构建一个可以创建10,000个计时器的测试程序.将每一个设置为在最后一个之后打勾一秒,并将其周期设置为10,000秒.然后坐下来观看它.或者让您的程序跟踪下一个应该打勾的人以及接下来实际打勾的人.