2010-06-02 8 views
6

¿Cómo puedo hacer que mi aplicación C# Windows Form, ya en ejecución, pueda recibir comandos desde la línea de comandos mientras se está ejecutando?¿Cómo hacer que mi aplicación .NET en ejecución pueda recibir comandos mientras se está ejecutando?

Por ejemplo: si mi aplicación está reproduciendo un video ahora, entonces quiero poder escribir en la línea de comando "MyApp/stop" para que mientras la aplicación sigue ejecutándose, deje de reproducir el video sin salir de la corriente sesión.

Respuesta

2

Al enviar un comando así, estarías activando otro proceso. Ciertos argumentos de línea de comando podrían hacer algún tipo de IPC para señalar la instancia "principal" de la aplicación en ejecución.

4

De su pregunta parece que su primer proceso todavía está ejecutándose y usted comienza una segunda instancia del mismo, y desea que esa instancia se comunique con el primero.

Lo que usted está buscando se llama inter-process communication (IPC). La forma estándar de hacer esto en .NET es usar Windows Communication Foundation (WCF).

+1

En ocasiones, puede ver IPC a las que se hace referencia como pipes con nombre. Hay un tutorial bastante bueno aquí: http://omegacoder.com/?p=101 –

+0

Las tuberías con nombre son * una * forma de IPC. Hay otros, algunos de los cuales pueden ser más adecuados para esta tarea. –

1

sin cambiar su estructura de diseño y suponiendo que su aplicación es una aplicación independiente (que se ejecuta en un PC local),

Un método es hacer un hilo de su espera aplicación (WaitOne ()) para un mutex o semáforo con nombre (link text).

Cuando inicia su aplicación (su segunda instancia), analiza su línea de comandos (a través de los argumentos args). Si el args [0] contiene su comando "/ stop", usted "Libera()" el ​​mutex/semáforo con nombre. Luego su hilo (en la primera instancia) se despertará para detener la reproducción del video.

Por otra parte (una vez dicho todo lo anterior), una solución más simple es tener un botón de DETENCIÓN en su aplicación donde el usuario puede hacer clic en él.

Cuestiones relacionadas