2009-09-03 27 views

Respuesta

36

Solución mucho mejor, deje que windows lo haga por usted usando Scheduled Tasks.

Si solo tiene que ejecutarse una vez al día, entonces me gustaría ir por esto. Incluso Google lo hace;)

EDIT:

Para contestar el comentario, es como Fredrik ha dicho. Es una opción avanzada, que puede abrir mientras se configura la tarea, que contiene una casilla de verificación llamada: "Run only if logged on", que es falso para empezar.

+0

¡Lo recomiendo! Para mi empresa, actualmente es la mejor solución. – Zanoni

+3

Este es definitivamente el camino a seguir; entonces tu aplicación no usará ninguna memoria mientras solo esté esperando para ejecutarse mañana. –

+0

Cambie el servicio de C# a una aplicación de Windows sin formularios. – Zanoni

4

Escriba una aplicación de consola o equivalente, y use el Programador de Windows (o como se llame hoy en día ...) para ejecutarlo a diario.

1

¿Por qué no lo configuran para funcionar como una tarea programada. Haga que se ejecute y luego salga. Configure Windows para iniciar el proceso como una tarea programada a las 3:00 a.m. todos los días.

3

Para una solución flexible, puede usar this. No es un servicio de Windows, pero podría incorporarlo fácilmente en uno. O puede considerar Quartz.NET, que tiene fama de ser de fuerza industrial (la versión de Java ciertamente lo es).

+0

+1 para la referencia Quartz.NET - esto sería la opción correcta y de hecho robusta para hacer frente a las necesidades de programación dentro de una solución personalizada (y debe ser Preferiblemente manos abajo sobre el cron personalizado limitado que usted mencionó, usar Quartz es notablemente fácil), aunque para la tarea en cuestión simplemente usar el Programador de tareas según la respuesta aceptada es definitivamente el camino a seguir. –

2

Otras respuestas son buenas. Yo sólo pensé en señalar que

comparar la DateTime.Now con 03 a.m.

es una mala solución, incluso si el sueño de un tiempo entre cada cheque, ya que desperdicia recursos del sistema innecesariamente (no solo al verificar repetidamente la hora, sino también en el uso de la memoria del programa).

3

que he utilizado con éxito las tareas programadas para copias de seguridad, pero no tengo una palabra de advertencia ...

tareas programadas no se pueden realizar si sale. No estoy seguro de si esto puede ser ignorado, pero me han sorprendido las tareas no realizadas porque Windows se actualiza automáticamente, se reinicia y se queda esperando a que inicie sesión.

Inhabilité las actualizaciones automáticas. Windows debe PREGUNTAR primero.

Otra consideración es que 3AM es un momento en que muchos usuarios normalmente se cerrarían la sesión.

+0

Esto es lo que estoy pensando ... He intentado la tarea programada y después de reiniciar el servidor, nada comienza ... ¡Gracias! – Bigballs

+0

Debo decir que nunca tuve el problema yo mismo. Siempre trabajé 100% para mí. –

2

Si espera un archivo todas las noches, en lugar de preocuparse por cuándo llega, solo active un evento cuando lo haga.

Mira:

System.IO.FileSystemWatcher

File System Watcher on MSDN

+0

+1 Buena clase, gracias :) –

Cuestiones relacionadas