net ejemplo c# .net vb.net timer

c# - ejemplo - Temporizador confiable en una aplicación de consola



timer c# ejemplo (2)

Considere usar un ManualResetEvent para bloquear el hilo principal al final de su procesamiento, y llame a Reset() una vez que el procesamiento del temporizador haya finalizado. Si esto es algo que necesita ejecutarse constantemente, considere pasar esto a un proceso de servicio en lugar de una aplicación de consola.

Soy consciente de que en .NET hay tres tipos de temporizador (consulte Comparación de las clases de temporizador en la biblioteca de clases de .NET Framework ). Elegí un temporizador roscado ya que los otros tipos pueden derivar si el hilo principal está ocupado, y necesito que esto sea confiable.

La forma en que este temporizador funciona en el control del temporizador se coloca en otro subproceso para que siempre se pueda marcar junto con el trabajo que comienza en el subproceso principal cuando no está ocupado.

El problema con este temporizador en una aplicación de consola es que mientras el temporizador avanza en otro hilo, el hilo principal no está haciendo nada para que la aplicación se cierre.

Intenté agregar un ciclo while true , pero luego el hilo principal está demasiado ocupado cuando el temporizador se apaga.


Puede usar algo como Console.ReadLine() para bloquear el hilo principal, por lo que otros hilos de fondo (como hilos de temporizador) seguirán funcionando. También puede usar un AutoResetEvent para bloquear la ejecución, luego (cuando sea necesario) puede llamar al método Set () en ese objeto AutoResetEvent para liberar el hilo principal. También asegúrese de que su referencia al objeto Timer no esté fuera del alcance y la basura recolectada.