Actualmente estoy usando System.Threading.Timer en un intervalo de 10 segundos. He agregado un pequeño fragmento de código para escribir en un archivo cada vez que se dispara el temporizador, y aunque la mayoría de las veces se dispara a tiempo, a veces (presumiblemente cuando se compra el resto de la aplicación), no se dispara durante 30 o 40 segundos, y dispara una y otra vez en rápida sucesión.Temporizador más confiable que System.Threading.Timer
¿Existe un temporizador más confiable que pueda usar en .NET 3.5?
El temporizador se configura como sigue
Timer someTimer = new Timer(new TimerCallback(SomeMethod), null, 0, 10000);
... y la devolución de llamada es:
private static void SomeMethod(object state)
Sin embargo, es difícil proporcionar mucho más código que esto, como el temporizador general los incendios correctamente . Cuando está incrustado en una aplicación masiva (~ 100,000 líneas más o menos), con múltiples hilos que se disparan, izquierda, derecha y centro, lentamente comienzas a ver el temporizador disparándose intermitentemente. He visto varias publicaciones que sugieren que el ThreadPool puede estar agotado, por lo que estoy buscando para ver si esto podría ser lo que estoy experimentando.
¿Puede proporcionar algún código de muestra en lugar de * suponiendo * que el temporizador no es confiable? Tiendo a encontrar que es mi propio código el problema y no el .NET Frameworks. –
El temporizador se configura de la siguiente manera: – JamesPD
Es muy probable que el consumo de ThreadPool sea el caso si el procesamiento de la marca tarda más de 10 segundos. Obtendrá lentamente una acumulación de elementos. La táctica estándar es detener el temporizador de entrada a un evento de marcación y volver a iniciarlo al final para no tener "pérdida de temporizador" debido a los largos tiempos de procesamiento. –