Un poco tarde en esto, lo sé, pero. . .
System.Timers.Timer
es un contenedor alrededor de System.Threading.Timer
, que a su vez es un contenedor .NET alrededor de Windows 'Timer Queues. Los temporizadores de cola del temporizador son muy livianos: use pocos recursos del sistema. No he escalado a miles de temporizadores, pero cientos de temporizadores funcionan bien. Por lo poco que he podido obtener de la implementación, no puedo imaginar que haya problemas con miles de temporizadores.
Probablemente haya algún límite en la cantidad de temporizadores que puede tener en cualquier cola de temporizador en particular. No sé cuál es ese límite. Cuando investigué estos temporizadores hace aproximadamente un año, parecía que .NET Framework creaba una cola de temporizador por proceso (o tal vez era por dominio de aplicación), y todos los temporizadores que creas se colocan en esa cola.
Probablemente no tenga sentido duplicar la funcionalidad de la cola del temporizador creando su propio sistema que utiliza un solo temporizador y algún tipo de mecanismo de cola de prioridad para controlar lo que se llama a continuación. Eso es lo que la cola del temporizador ya hace por ti.
Parece que podría crear fácilmente un programa de prueba que crea 10.000 temporizadores. Configure cada uno para que marque un segundo después de la última y establezca su período en 10,000 segundos. Luego siéntate y mira cómo funciona. O haga que su programa realice un seguimiento de quién debe marcar la casilla siguiente y quién marca el próximo.
Tengo una pregunta similar sobre Threading.Timer. – GregC
@GregC, ¿puedes publicar un enlace para que pueda ver esas respuestas? – tster