|
LINK:CREANDO UN SERVICIO DE WINDOWS CON C# Me encuentro escribiendo este nuevo artículo para todos los lectores de esta página. Este articulo trata de cómo crear un servicio de Windows con Visual Studio en esta ocasión los explicare con Vb espero a alguien le pueda servir. Lo primero que necesitamos hacer es agregar un nuevo proyecto pero esta ves seleccionaremos un servicio de Windows. Se abra creado nuestro proyecto. Para hacer que funcione nuestro Servicio es necesario Instalarlo en el Sistema, por lo cual nuestro siguiente paso es agregar un instalador a nuestro servicio. Para este paso deberemos darle click derecho dentro de la parte del formulario de nuestro Servicio y aparecerá una pantalla en la cual daremos click en Agregar Instalador. Se crearan dos componentes al agregar nuestro instalador que son los siguientes Hasta estos momentos contaremos con dos clases: ProjectInstaller Service1 Nota: Podrán cambiar el nombre de sus clases, para mayor entendimiento las dejare como las da por defecto, hasta estos momentos todos deberemos de contar con estos elementos en nuestro explorador de soluciones.
Solo nos ara falta agregar un ultimo elementó a nuestro proyecto, este elemento es conocido como timer. No es el timer que nos da por defecto Visual Studio, este timer se deberá de agregar como un elemento a nuestro cuadro de herramientas. Lo primero que deberemos hacer es colocarnos en el cuadro de herramientas de nuestro proyectó, daremos click derecho y seleccionaremos la opción de Elegir Elementos. Nos aparecerá una pantalla de componentes donde deberemos de agregar el elemento timer, con el espacio de nombres System.Timers, lo seleccionamos y damos click en aceptar. Se abra agregado nuestro componente a nuestra caja de herramientas. Ya habremos agregado todos los elementos para que funcione nuestro Windows Services ahora empecemos a programarlo para que funcione. Empecemos con el código del Instalador. Imports System.ComponentModel Imports System.Configuration.Install
Public Class ProjectInstaller
Public Sub New() MyBase.New()
'El Diseñador de componentes requiere esta llamada. InitializeComponent()
'Agregue el código de inicialización después de llamar a InitializeComponent
End Sub
End Class Lo primero que debemos de hacer es importar la clase System.ServiceProcess Imports System.ServiceProcess Después de eso debemos de indicar de qué forma arrancara el servicio. 'Indica de que forma va arrancar el Servicio Public proceso As New ServiceProcessInstaller() proceso.Account = ServiceAccount.LocalService Puedes arrancar el servicio de las siguientes Formas Servicio Local Sistema Local Servicio de Red Usuario Después de indicar la forma en la que se Registrara el Servicio, es necesario indicar como se va iniciar el proceso de la siguiente forma: 'Indica como se va iniciar el Servicio Public servicio As New ServiceInstaller() servicio.StartType = ServiceStartMode.Automatic Los servicios se pueden iniciar de la siguiente forma: Automática: Deshabilitada: Manual: Después de indicar de que forma inicializara y en que forma correrá es necesario indicarle un nombre a nuestro servicio de la siguiente forma. 'Muestra el nombre de el Servicio servicio.ServiceName = "MyServicio" servicio.DisplayName = "MyServicio" Una ves indicando los detalles de nuestro servicio como ultimo paso agregamos nuestros objetos a el instalador. 'Agrega los componentes que declaramos anteriormente a nuestro Instalador Installers.Add(servicio) Installers.Add(proceso) Hemos acabado de programar nuestro instalador, este es el código completo de lo que acabamos de hacer. Imports System.ComponentModel Imports System.Configuration.Install Imports System.ServiceProcess Public Class ProjectInstaller Inherits System.Configuration.Install.Installer Public proceso As New ServiceProcessInstaller() Public servicio As New ServiceInstaller() Public Sub New() MyBase.New() InitializeComponent() 'Indica de que forma va arrancar el Servicio proceso.Account = ServiceAccount.LocalService 'Indica como se va iniciar el Servicio servicio.StartType = ServiceStartMode.Automatic 'Muestra el nombre de el Servicio servicio.ServiceName = "MyServicio" servicio.DisplayName = "MyServicio" 'Agrega los componentes que declaramos anteriormente a nuestro Instalador Installers.Add(servicio) Installers.Add(proceso) End Sub End Class Ahora necesitamos programar lo que hará nuestro servicio, este es el código sin programar de nuestro servicio. Public Class Service1
Protected Overrides Sub OnStart(ByVal args() As String) ' Agregue el código aquí para iniciar el servicio. Este método debería poner ' en movimiento los elementos para que el servicio pueda funcionar. End Sub
Protected Overrides Sub OnStop() ' Agregue el código aquí para realizar cualquier anulación necesaria para detener el servicio. End Sub
End Class Recuerdan que agregamos un Timer a nuestro Formulario de nuestro Servicio, pues es momento de hacer doble click en el para programar dentro del evento Timer_Elapsed este es el código de nuestro servicio. Public Class Service1 Protected Overrides Sub OnStart(ByVal args() As String) ' Agregue el código aquí para iniciar el servicio. Este método debería poner ' en movimiento los elementos para que el servicio pueda funcionar. End Sub Protected Overrides Sub OnStop() ' Agregue el código aquí para realizar cualquier anulación necesaria para detener el servicio. End Sub Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed 'aqui pondremos el proceso que queremos que haga nuestro servicio End Sub End Class Hasta este momento es hora de que utilicen su imaginación para hacer los servicio que quieran, estos son los pasos a seguir para los servicio, puedes hacer servicios que hagan que se inicialicé una aplicación cada determinada hora o que se yo, yo voy a crear como termino de mi ejemplo un servicio sencillo que me muestre un mensaje en un tiempo determinado en el Timer.Interval, este será al código. #Region "Servicio de Windows" Imports ServicioWeb.localhost.ServicioWeb Imports ServicioWeb.localhost Public Class Exportar #Region "Inicia el Proceso" Protected Overrides Sub OnStart(ByVal args() As String) Timer1.Interval = 5400 Timer1.Start() End Sub #End Region #Region "Detiene el Proceso" Protected Overrides Sub OnStop() Timer1.Stop() End Sub #End Region #Region "PROCESO QUE EJECUTA" Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed Dim hora As New Date MsgBox("Esto se ejecutara cada 5 minutos") End Sub #End Region End Class #End Region Después de tener el código de nuestro proyecto Finalizado, simplemente lo ejecutamos para que nos genere nuestro archivo (.exe) Abrimos el Símbolo del Sistema de Visual Studio. Y dentro del símbolo del Sistema instalamos nuestro servicio, con el comando InstallUtil “path”. El path es la ruta completa de donde se encuentra el archivo .exe de nuestro proyecto que anteriormente creamos. 
Después de Instalar nuestro Servicio nos vamos al panel de control, Herramientas Administrativas y buscamos servicio, comprobamos si nuestro servicio se encuentra ahí, el servicio se debe de llamar como lo pusimos en la clase de Instalación de un principio, recuerden que el nombre era MyServicio.  Recuerden que lo declaramos que iba arrancar de forma local e iba iniciar de forma automática, simplemente nos queda iniciarlo. Después de Iniciar nuestro servicio Se estará ejecutando como lo declaramos en el atributo Timer1.Interval. Nota:Para controlar el tiempo del servicio solo cambia el tiempo en el atributo Timer1.Interval
Espero a alguien le halla servido este pequeño articulo.
|