Mi aplicación debe comportarse de forma ligeramente diferente cuando se carga si ya hay una instancia ejecutándose.Detectando si ya se está ejecutando otra instancia de la aplicación
Entiendo cómo usar un mutex para evitar la carga de instancias adicionales, pero eso no soluciona completamente mi problema.
Por ejemplo:
- Instancia 1 cargas, obtiene el mutex.
- Instance 2 cargas, no puede obtener el mutex, sabe que hay otra instancia. Hasta aquí todo bien.
- La instancia 1 se cierra, libera el mutex.
- Instance 3 cargas, obtiene el mutex, no sabe que la Instancia 2 todavía está ejecutándose.
¿Alguna idea? Afortunadamente, no necesita lidiar con cuentas de usuario múltiples ni nada de eso.
(C#, aplicación de escritorio)
Editar: Para aclarar, la aplicación no necesita estar restringida a una sola instancia, sólo realizar una acción de puesta en marcha ligeramente diferente si hay otra instancia en ejecución. Múltiples instancias están bien (y se esperan).
en el escenario que mencionó, ¿cuál es el comportamiento deseado? ¿Debería la instancia 3 hacer qué instancia 1 estaba haciendo y la instancia 2 seguir comportándose como antes? (suponiendo que no desea garantizar una sola instancia, ya que esto se soluciona con el mutex. La instancia 2 saldrá eventualmente) –
En este escenario, la Instancia 1 se comporta de una manera, las Instancias 2 y 3 necesitan usar el comportamiento alternativo. Si ya hay una instancia ejecutándose, independientemente de cuándo comenzó o qué sucedió desde entonces, una nueva instancia se comportará ligeramente, aunque no significativamente, de manera diferente. La diferencia es solo una acción única en la carga. – Andy