Servicio windows con formulario accesible

04/09/2007 - 12:06 por Jesús | Informe spam
Hola a todos:

Necesito crear una aplicación en modo servicio de windows que tendrá al
menos un formulario dónde habrá diversos componentes con los que el usuario
deberá poder interactuar.

Ya he podido crear el servicio sin formulario e instalarlo con
"InstallUtil.exe". Lo he instalado para que permita interactuar con el
escritorio.

He añadido un formulario al proyecto con una etiqueta y un botón y en el
metodo OnStart he añadido lo siguiente:

Form1 formulario = New Form1();
formulario.Show();
formulario.Text = "HOLA";

El resultado cuando inicio el servicio es que se me muestra el formulario
con el nombre "HOLA" en la barra de título pero no veo ni la etiqueta ni el
botón y si pincho en alguna parte del formulario el título se cambia a
"HOLA(No responde)".

¿Es posible hacer lo que necesito o debo tomar otro camino?

Muchas gracias por anticipado

Jesús Corbí

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
04/09/2007 - 12:54 | Informe spam
"Jesús" wrote in message
news:
Necesito crear una aplicación en modo servicio de windows que tendrá al
menos un formulario [...]
[...]
¿Es posible hacer lo que necesito o debo tomar otro camino?



Es recomendable que tomes otro camino. Lo más correcto es que hagas un
programa Windows completamente separado, que sea el que muestre el
formulario, y que este programa se comunique con el servicio mediante algún
mecanismo de comunicación inter-procesos (por ejemplo, mediante Remoting de
.Net).
Lo de permitir al servicio interactuar con el escritorio, según me han
explicado recientemente, se inventó en los tiempos del NT4 para depurar los
servicios, pero no está pensado para usarlo durante el funcionamiento normal
de los servicios. Me han asegurado que en Windows Vista y 2008 ya no
funciona, aunque no lo he probado personalmente.
Respuesta Responder a este mensaje
#2 Jesús
04/09/2007 - 13:10 | Informe spam
Gracias Alberto.

Pero me queda una duda. Si creo un servicio de windows para ejecutar una
aplicación más o menos estandar con Windows Forms ¿podré interactuar con ella?

Gracias de nuevo

Jesús

"Alberto Poblacion" wrote:

"Jesús" wrote in message
news:
> Necesito crear una aplicación en modo servicio de windows que tendrá al
> menos un formulario [...]
> [...]
> ¿Es posible hacer lo que necesito o debo tomar otro camino?

Es recomendable que tomes otro camino. Lo más correcto es que hagas un
programa Windows completamente separado, que sea el que muestre el
formulario, y que este programa se comunique con el servicio mediante algún
mecanismo de comunicación inter-procesos (por ejemplo, mediante Remoting de
..Net).
Lo de permitir al servicio interactuar con el escritorio, según me han
explicado recientemente, se inventó en los tiempos del NT4 para depurar los
servicios, pero no está pensado para usarlo durante el funcionamiento normal
de los servicios. Me han asegurado que en Windows Vista y 2008 ya no
funciona, aunque no lo he probado personalmente.


Respuesta Responder a este mensaje
#3 Alberto Poblacion
04/09/2007 - 15:53 | Informe spam
"Jesús" wrote in message
news:
Pero me queda una duda. Si creo un servicio de windows para ejecutar una
aplicación más o menos estandar con Windows Forms ¿podré interactuar con
ella?



No. Lo correcto es que no sea el servicio windows el que abra la
aplicación, sino que la aplicación se abra desde la sesión de windows, y una
vez abierta sea ella la que inicie una conexión con el servicio para
comunicarse con él. De esta forma aseguras que la aplicación pueda
interactuar con la sesión abierta por el usuario.
Respuesta Responder a este mensaje
#4 Jesús
04/09/2007 - 16:26 | Informe spam
Hola Alberto:
Quizá no me he expresado correctamente.

Mi intención es que esa aplicación se esté ejecutando siempre y que se
inicie automáticamente ante un reinicio del servidor que la alberga y que se
recupere automáticamente ante un fallo en la misma (tal y como se puede
configurar en un servicio de windows).

Se trata de una aplicación que "escucha" en un puerto y realiza acciones
contra un SQL Server dependiendo de lo que reciba. Lo que pasa es que
necesito un formulario para ajuste de diversos parámetros de la aplicación,
de ahí que tenga que poder interactuar con ella.

Es por ello que mi primera intención era desarrollarla como un servicio de
windows para tener contemplados los aspectos que te comento en el primer
párrafo.

Te agradeceré cualquier comentario u orientación más que me puedas dar para
el mejor planteamiento de lo que necesito.

Gracias de nuevo.

Jesús

"Alberto Poblacion" wrote:

"Jesús" wrote in message
news:
> Pero me queda una duda. Si creo un servicio de windows para ejecutar una
> aplicación más o menos estandar con Windows Forms ¿podré interactuar con
> ella?

No. Lo correcto es que no sea el servicio windows el que abra la
aplicación, sino que la aplicación se abra desde la sesión de windows, y una
vez abierta sea ella la que inicie una conexión con el servicio para
comunicarse con él. De esta forma aseguras que la aplicación pueda
interactuar con la sesión abierta por el usuario.



Respuesta Responder a este mensaje
#5 Alberto Poblacion
04/09/2007 - 17:56 | Informe spam
"Jesús" wrote in message
news:
Mi intención es que esa aplicación se esté ejecutando siempre y que se
inicie automáticamente ante un reinicio del servidor que la alberga y que
se
recupere automáticamente ante un fallo en la misma (tal y como se puede
configurar en un servicio de windows).

Se trata de una aplicación que "escucha" en un puerto y realiza acciones
contra un SQL Server dependiendo de lo que reciba. Lo que pasa es que
necesito un formulario para ajuste de diversos parámetros de la
aplicación,
de ahí que tenga que poder interactuar con ella.



Justo. Es lo que yo digo. La aplicación que escucha en el puerto y
realiza acciones contra un sql server es un servicio windows, y siempre
arranca al arrancar el servidor.
En cambio, el formulario para ajustar parámetros de la aplicación NO es
parte del servicio. Es un simple programa windows que el usuario arranca
cuando quiere configurar algo del servicio. Este programa usa algún
mecanismo de ipc, como por ejemplo Remoting, para transmitirle al servicio
los cambios deseados en los parámetros de la aplicación.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida