Pregunta

Soy consciente de que en .NETO Hay tres tipos de temporizador (ver Comparación de las clases de temporizador en la biblioteca de clases de .NET Framework).Elegí un temporizador de subprocesos ya que los otros tipos pueden variar si el subproceso principal está ocupado y necesito que sea confiable.

La forma en que funciona este temporizador en el control del temporizador se coloca en otro subproceso para que siempre pueda funcionar junto con el inicio del trabajo completado 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 hace nada para cerrar la aplicación.

Intenté agregar un while true bucle, pero luego el hilo principal está demasiado ocupado cuando suena el temporizador.

¿Fue útil?

Solución

Puedes usar algo como Console.ReadLine() para bloquear el hilo principal, de modo que otros hilos en segundo plano (como los hilos del temporizador) sigan funcionando.También puedes usar un Evento de reinicio automático 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 salga del alcance y no se recolecte basura.

Otros consejos

Considere usar un Evento de reinicio manual para bloquear el hilo principal al final de su procesamiento, y llamar Reset() en él una vez que el procesamiento del temporizador haya terminado.Si esto es algo que debe ejecutarse constantemente, considere trasladarlo a un proceso de servicio en lugar de a una aplicación de consola.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top