WINDOWS?
Nivel: Intermedio-Avanzado
por Alberto Población
Esta pregunta apareció hace un par de meses en uno de los foros de .Net:
La respuesta no es inmediata, porque el usuario que formula la pregunta tiene una confusión
considerable respecto a cómo funcionan los servicios, y los cambios producidos entre
versiones del Framework.
Respecto a la versión de Framework, lo primero que hay que señalar es que en este caso
ésta resulta irrelevante. De cara al tema de la pregunta, no ha cambiado nada entre la versión
1.x y la 3.5. Los servicios siguen funcionando igual, y lo que era aplicable en la 1.x sigue
siéndolo en la 3.5.
Un requisito fundamental que tenemos que tener en cuenta al programar el servicio es que el
método OnStart, que se ejecuta en el momento en que el servicio se pone en marcha, debe
terminar rápidamente. Si tarda más de unos segundos, el Service Control Manager (SCM)
mostrará un error indicando que nuestro servicio no consiguió arrancar.
La forma de conseguir esta ejecución de código en un hilo separado dependerá del objetivo de
nuestro Servicio, no de la versión del Framework que se utilizó para compilarlo. Si se necesita
hacer algo con una periodicidad fija, entonces interesa utilizar Timer, pero no siempre es el
caso.
Por ejemplo, podríamos tener un servicio que haga "algo" cada vez que se copia un fichero a
una determinada carpeta. En este caso, nos interesa emplear un FileSystemWatcher para
que dispare automáticamente un evento cada vez que se produzca esa copia de fichero. En ese
evento meteríamos nuestro código, y el OnStart lo único que haría es inicializar los
parámetros del FileSystemWatcher.
public Service1()
{
InitializeComponent();
if (!Directory.Exists(directorio))
Directory.CreateDirectory(directorio);
fsw = new FileSystemWatcher();
fsw.Path = directorio;
fsw.IncludeSubdirectories = true;
fsw.Filter = "*.txt";
fsw.Deleted += new FileSystemEventHandler(fsw_Deleted);
}
Acerca de campusMVP
CampusMVP te ofrece la mejor formación en tecnología Microsoft a través de nuestros cursos online y
nuestros libros especializados, impartidos y escritos por conocidos MVP de Microsoft. Visita nuestra
página y prueba nuestros cursos y libros gratuitamente. www-campusmvp.com