Pasar parametros a un servicio que ya está corriendo?

10/11/2006 - 12:25 por barajoider | Informe spam
Hola tengo una pequeña duda, hay alguna forma de que un servicio
hecho con .net le pueda pasar parametros mientras está ejecutandose?
Este servicio esta comprobando cosas, pero a parte quiero poderle enviar un
parametro para que genere un hilo y compruebe otra.

Muchas gracias y un saludo!

Preguntas similare

Leer las respuestas

#6 Jesús López
13/11/2006 - 16:41 | Informe spam
En tu servicio windows tendrás una clase que herede de ServiceBase que
representa el servicio windows. Sólo tienes que reescribir el método
OnCustomCommand para capturar el comando: por ejemplo:

Public Class Service1

Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
End Sub

Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your
service.
End Sub

Protected Overrides Sub OnCustomCommand(ByVal command As Integer)
Dim comando As MisComandos = CType(command, MisComandos)
Select Case comando
Case MisComandos.HacerEsto
HacerEsto()
Case MisComandos.HacerAquello
HacerAquello()
Case MisComandos.HacerLoDeMasAlla
HacerLoDeMasAlla()
End Select
End Sub

Private Sub HacerEsto()
'Aquí viene código para hacer esto
End Sub

Private Sub HacerAquello()
'Aquí viene código para hacer aquello
End Sub

Private Sub HacerLoDeMasAlla()
'Aquí viene código para hacer lo de más allá
End Sub
End Class

Public Enum MisComandos
HacerEsto = 129
HacerAquello
HacerLoDeMasAlla
End Enum


Desde una aplicación Windows Forms puedes enviarle comandos a este servicio
utilizando un código como este:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim controller As New
System.ServiceProcess.ServiceController("Service1")
controller.ExecuteCommand(MisComandos.HacerEsto)
controller.Dispose()
End Sub

End Class

Public Enum MisComandos
HacerEsto = 129
HacerAquello
HacerLoDeMasAlla
End Enum


Observa que el enumerado MisComandos empiezan por 129, ya que hasta 128
están resevados por el sistema. Observa también observa que el enumerado
está definido tanto en el proyecto del servicio windows como en la
aplicación Windows Forms.

Saludos:


Jesús López





"barajoider" escribió en el mensaje
news:
Jesus si es mas fecil usas los metodos OnCustomCommand
me podrias decir como funcionan?
Es que lo he estado mirando en el msdn y no me he enterado much, gracias y
un saludo!
hola


"Jesús López" wrote:

Hay formas mucho más sencillas que usar comunicación TCP-IP "a pelo" u
otro
tipo de comunicación como memoria compartida o named-pipes para
comunicarse
con un servicio windows. Usar esto es complicarse la vida
innecesariamente.

Por un lado, para cosas sencillas, puede usarse la clase
ServiceController
para enviar un comando personalizado a un servicio Windows mediante el
método ExecuteCommand. El Servicio Windows puede capturar este comando
reemplazando el método OnCustomCommand. Esta técnica es bastante limitada
puesto que no permite enviar parámetros con el comando, aunque una
posible
solución sería pasarle los parámetros en un archivo XML.

Y por otro lado un Servicio Windows puede exponer un objeto remoto de
.NET
Remoting con toda clase de métodos que pueden ser invocados por cualquier
otra aplicación.

Saludos:

Jesús López






"Alberto Poblacion"
escribió en el mensaje news:%233N$
> "barajoider" wrote in message
> news:
>> Hola tengo una pequeña duda, hay alguna forma de que un servicio
>> hecho con .net le pueda pasar parametros mientras está ejecutandose?
>> Este servicio esta comprobando cosas, pero a parte quiero poderle
>> enviar
>> un
>> parametro para que genere un hilo y compruebe otra.
>
> hay que usar algún mecanismo de comunicación inter-procesos. Uno de
> ellos consiste en usar la clase TcpListener dentro del servicio, que se
> queda esperando a que le llegue una comunicación a un determinado
> puerto
> TCP. El programa que tiene que enviar los parámetros utiliza la clase
> TcpClient para transmitir los datos al puerto en que está escuchando el
> servicio.
>
>
>



Respuesta Responder a este mensaje
#7 barajoider
14/11/2006 - 13:00 | Informe spam
Muchísimas Gracias Jesús!
Muy buen ejemplo, gracias por las molestias de veras :)

Un Saludo!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida