2011-06-23 7 views
5

Esta es la primera vez que trabajo con el servicio de Windows, y estoy aprendiendo sobre la marcha. Estoy usando VS 2010, Windows 7 para crear un servicio de Windows que tendrá un temporizador. He buscado en Google y navegado por este sitio, así Use of Timer in Windows Service, Best Timer for using in a Windows service pero todavía estoy confundido en cuanto a dónde codificar para el temporizador en el componente de servicio de WindowsAgregar un System.Threading.Timer a un servicio de Windows en VS 2010

que posean un método OnStart y el método OnStop en la clase Service1.cs
¿Dónde codificaré para que el temporizador ejecute la función (NO inicie el servicio de Windows)?

+0

¿Estás hablando en realidad * * comenzando el servicio o periódicamente la ejecución de algunas funciones * dentro * de su servicio? –

+0

Ejecutando periódicamente la función dentro del servicio – user788487

Respuesta

6

A continuación se muestra un ejemplo de cómo hacerlo. Escribe un mensaje en el registro de la aplicación (como se ve en el Visor de eventos) cada 10 segundos hasta que se detiene el servicio. En su caso, ponga su lógica periódica en el método OnElapsedEvent().

private System.Timers.Timer _timer = new System.Timers.Timer(); 

protected override void OnStart(string[] args) 
{ 
    _timer.AutoReset = true; 
    _timer.Interval = 10000; // 10 seconds 
    _timer.Elapsed += OnElapsedEvent; 
    _timer.Start(); 
} 

protected override void OnStop() 
{ 
    _timer.Stop(); 
} 

private void OnElapsedEvent(object sender, ElapsedEventArgs e) 
{ 
    // Write an entry to the Application log in the Event Viewer. 
    EventLog.WriteEntry("The service timer's Elapsed event was triggered."); 
} 

Tengo un par de respuestas detalladas aquí en lo que podría ser de ayuda a medida que comience a trabajar con servicios de Windows.

+0

Muchas gracias Matt. Eso es lo que necesitaba. – user788487

4

¿Sería más fácil utilizar una tarea programada para ejecutar una pequeña aplicación de consola o similar en lugar de tratar con los diversos matices que puede traer un servicio de Windows?

Si no es así, es posible que deba revisar un artículo normal sobre la escritura de servicios de Windows como this c# article o this VB Article. Una vez que vea cómo se ejecuta un servicio normal (un servicio que no usa un temporizador), debe saber dónde agregar el código del temporizador.

Espero que ayude?

+0

Las tareas programadas que se ejecutan durante varias horas (9 horas en mi caso) parecen estar cortadas. No estoy seguro de si hay un error en el código o un problema con el Programador de tareas. Pero esta alternativa será útil. Ops aquí donde trabajo es bueno con cualquiera o. Pero podrían ser un factor decisivo. – TamusJRoyce

+0

@TamusJRoyce hilo de 4 años; avíseme si tiene alguna pregunta (o mejor, el mismo nombre de usuario en Twitter). Buena suerte. – Smudge202

Cuestiones relacionadas