Usuario
Duda sobre servicio c#

Pregunta
-
Buenas tengo una duda sobre programar un servicio.
Cuando en el servicio, en el metodo OnStart pongo Thread.Sleep(cualquiernumero), el servicio se pilla y no arranca nunca. Lo que intento es esperar a que una variable (un path) tenga un valor que me da un FileSystemWatcher, y hasta que no tenga un valor, quiero que el servicio este simplemente esperando, pero no se ya como hacerlo
Gracias
Edito:
No sé si me expliqué bien. Yo lo que quiero es que se ejecute cierto codigo cuando la variable path (obtenido de FileSystemWatcher) tenga un valor, mientras no tenga valor, que el servicio espere a que esa variable tenga otro valor.
Lo que hace es procesar un archivo excel, vacio la variable path y que vuelva a esperar a que llegue otro archivo..
No sé si me expliqué bien, gracias de nuevo
- Editado Guille4712 viernes, 25 de mayo de 2018 10:47
Todas las respuestas
-
Hola, puedes crearte un Timer y que se ejecute cada cierto tiempo. Cuando se ejecute el método que se lanza en cada evento del Timer, se validará la variable que indicas en tu pregunta.
Te pongo un ejemplo
private Timer _timer = new Timer() ; protected override void OnStart(string[] args) {
// configurar el timer _timer.Elapsed += new ElapsedEventHandler(OnElapsedTime); _timer.Interval = 100000; _timer.AutoReset = false; _timer.Enabled = true; } // Este es el objeto que se usa para bloquear y controlar el acceso private static object _intervalSync = new object(); private void OnElapsedTime(object sender, ElapsedEventArgs e) { // bloqueamos la entrada en el método para evitar el solapamiento de ejecuciones de dos eventos de timer if (System.Threading.Monitor.TryEnter(_intervalSync)) { try { // Tu código aquí para chequear la variable path y demás } finally { // Nos aseguramos que Exit siempre se llama System.Threading.Monitor.Exit(_intervalSync); } } }
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Editado Sergio Parra viernes, 25 de mayo de 2018 15:17
- Propuesto como respuesta Sergio Parra jueves, 7 de febrero de 2019 0:28
-
-