2010-04-06 20 views
5

Tengo un servicio de Windows C# que necesita ejecutar una consulta de base de datos cada 60 segundos (o cualquier intervalo que se establezca en el archivo de configuración). Estoy usando Thread.sleep (60) en un ciclo while para lograr esto. ¿Hay una mejor manera de hacer esto?El servicio de Windows necesita esperar, Thread.Sleep?

Gracias

+0

¿Le importa en qué hilo se ejecuta la consulta? – Gabe

+0

no. Solo quiero asegurarme de que no voy a tener ningún problema ... parece que el temporizador funcionará mucho mejor. Sin bucles, lo cual es bueno. –

Respuesta

8

se puede utilizar un System.Threading.Timer para ejecutar el código cada 60 segundos en lugar de hacerlo en un hilo de dormir.

+1

Por supuesto, eso significa que si su código se ejecuta durante más de 60 segundos, obtendrá problemas de subprocesamiento múltiple, como el acceso al archivo de registro. No recomendaría hacer eso. –

4

Utilice un Timer para iniciar el proceso cada 60 segundos en lugar de forzar el proceso para que duerma.

5

Depende de lo que quieras hacer. Si desea un método (más) exacto, puede usar System.Threading.Timer. Una cosa sobre thread.sleep es que realmente es "sleepatleast hasta que ...". El procesador ignorará su hilo hasta que el tiempo de sueño haya pasado. La próxima vez que le daría prioridad a su subproceso, después de que el tiempo de suspensión haya pasado, lo hará.

Esto normalmente estará muy cerca del intervalo deseado, pero podría ser más largo. No cedas a menos que realmente pretendas ceder.

Cuestiones relacionadas