C #: cómo – ¿aplicación de instancia única que acepta nuevos parámetros?

Estoy creando un progtwig (C #) que descarga archivos binarios usando archivos NZB, solo puede haber una instancia de mi aplicación ejecutándose en cualquier momento.

Entonces, cuando un usuario hace doble clic en un archivo .nzb y mi progtwig no se está ejecutando, debería iniciarlo y procesarlo (fácil, registro de archivos). Ahora, si mi progtwig ya se está ejecutando, NO quiero iniciar una segunda instancia: quiero que la instancia que ya está ejecutándose recupere el archivo especificado.

Hacer mi instancia única de aplicación puede hacerse usando la DLL de Visual Basic con el truco .IsSingleInstance, pero no quiero ir allí.

La forma correcta parece ser utilizar un mutex para asegurar que mi aplicación sea de instancia única, pero ahora estoy atascado en cómo pasar el parámetro especificado (el archivo .nzb) a la instancia que ya se está ejecutando.

¡Ayuda sería apreciada! 🙂

Intente esto: su progtwig principal crea una tubería con nombre u otro recurso de comunicación entre procesos y escucha en él. Usted crea un pequeño progtwig por separado que, cuando se ejecuta con un archivo NZB como parámetro, abre el conducto, ingresa la información del archivo en él y sale. Su progtwig principal luego procesa el nuevo archivo y lo descarga.

¿Por qué no tener un progtwig que agrega el archivo a una cola y luego inicia el progtwig de descarga si aún no se está ejecutando? Ese progtwig de descarga mira la cola, que es solo un archivo al que se añaden los nombres de los archivos de descarga.

Mira el InitialInstanceActivator en el proyecto Genghis

Use un mecanismo de IPC (inter process communication) como .net remoting

Usando la “buena implementación”, tuve que agregar un escritor.Flush () después de WriteLine () para que funcione. Perdí un poco de tiempo para encontrar esto …