2011-03-30 17 views
7

duplicados posibles:
windows service vs scheduled task
Windows Service Vs Simple ProgramC# servicio de Windows o simplemente programa normal?

estoy tratando de crear un programa que se ejecuta periódicamente (por ejemplo cada 5 minutos), o tener el programa en ejecución y haga que la ejecución la función dentro de ella (cada 5 minutos).

El programa es obtener datos de una base de datos cuando se ejecuta y luego escribir esto (por ahora) decir info.txt archivo (sin material sensible está contenida en aquí). cada vez que escribe en el archivo, debe sobrescribir la información existente dentro del archivo.

El programa también debe iniciarse automáticamente al inicio de Windows. (por lo tanto, no es necesario iniciar sesión en la máquina y ejecutar el .exe [si es un programa normal y no un servicio])

Entre los períodos que se ejecuta el programa no tendría nada que ver.

Por lo tanto, debería ejecutar este programa como un servicio de Windows, o debería utilizar el programador de tareas para iniciar periódicamente el programa para hacer esto? Mi objetivo es que este programa se ejecute de la mejor manera posible sin obstruir los recursos. (Por ejemplo., No debería necesitar más de un 5% de la CPU)

espero que mi pregunta era lo suficientemente clara.

+0

¿A qué sistema de destino se dirigen? Dudo que el Programador de tareas pueda iniciar programas sin un inicio de sesión de usuario interactivo. –

+1

@Chris: puede indicar al planificador de tareas que inicie algunas aplicaciones en la cuenta que especifique para esa tarea – HABJAN

+0

¿Cuáles son las plataformas de destino? ¿Cuánto tiempo tomará el proceso real? Tenga en cuenta que el Programador de tareas se ejecutará cada 5 minutos (sin embargo, puede configurarlo para que no se ejecute si ya se está ejecutando otra instancia). En el enfoque del Servicio de Windows, puede "programar" el intervalo de 5 minutos después de que se haya completado la ejecución anterior. – gooch

Respuesta

9

Me gustaría ir con la aplicación que se desencadena por el planificador de tareas. Lo único que debe preocuparse es ejecutar una sola instancia de su aplicación.

Puede configurar la tarea para ejecutarse bajo la cuenta de usuario específico y funcionando incluso si el usuario no ha iniciado sesión. Hay varios eventos que pueden desencadenar una estrella de tareas como "Inicio de Windows", "Sistema inactivo" ...

Otra ventaja es: si algo falla, puede configurar el programador de tareas para que le envíe un correo electrónico o le avise en cantidad de formas. Puede controlar el "código de salida" de su aplicación y señalar al planificador de tareas qué está sucediendo y qué hacer.

Hay un montón de características positivas que ofrece el programador de tareas, pero no muchas personas están usando.

+1

La mayor ventaja de utilizar el programador de tareas es que el código de programación ya está escrito/probado. Si cambia de opinión sobre cómo desea programarlo, no es gran cosa, simplemente cámbielo en la configuración de la tarea. – RQDQ

+0

@RQDQ: ¡Sí, ese es el punto! – HABJAN

+0

+1 para el planificador de tareas. Probablemente estés agregando más complejidad a una aplicación simple de la que necesitas convirtiéndola en un servicio. –

0

Sugeriría un servicio de Windows para esto. ¿Podría ser una buena idea crear ambos y comparar cómo es el uso de los recursos de todos modos?

0

De hecho, recomendaría ir para ambos dependiendo de los requisitos de la tarea que desea ejecutar. Por lo general, creo la mayoría de las funcionalidades para los servicios programados en una sola biblioteca de clases y luego las envuelvo en una aplicación de consola para comenzar y para la depuración. Cuando esté satisfecho, lo envuelvo en un servicio de Windows y me olvido de él.

Consideraciones del uso de una aplicación de consola:

  • asegurarse de que se ejecuta bajo la cuenta del sistema si es posible o se puede poner en una entrada específica en Ejecutar como en el planificador. Esto asegurará que no se requiera un inicio de sesión interactivo.
  • Si tener 2 instancias funcionando al mismo tiempo es un problema, asegúrese de nombrarlo claramente y verifique si hay una instancia ejecutándose en su método principal y salga si lo está. Un servicio de Windows evitará este problema.

Consideraciones de utilizar un servicio de la ventana

  • asegurarse de que está educado en el uso de hilo. Los servicios de Windows utilizarán menos recursos si se administran correctamente, pero pueden ser complicados si son nuevos para usted y terminan perdiendo memoria en tareas basadas en temporizadores.

.. hay mucho más que considerar, pero codifíquelo bien y puede comenzar con uno y pasar al segundo cuando esté seguro de ello.

Cuestiones relacionadas