La Web del Programador: Comunidad de Programadores
 
    Pregunta:  55159 - COMO EVITAR QUE EJECUTEN EL SISTEMA SI ESTE YA ESTA EJECUTAD
Autor:  Anly Calle Cruz
Holas, necesito ayuda por fa gracias.
Como evito que no vuelvan a ejecutar o abrir dos veces el sistema Desarrollado.

  Respuesta:  nayumi orama
Supongo que te referirás a que una aplicación sólo se ejecute una vez.

La mejor forma de hacerlo es utilizando un mutex con nombre. Los mutex son objetos globales del sistema operativo, que además pueden ser compartidos entre aplicaciones.

Pero vamos al código.

En el formulario principal, supongamos Form1, de tu aplicación pones el siguiente código.

static Mutex mutex;
static string AppGuid ="26272A87-988F-428c-90DB-0CFA372A2E99"; // GUID generado con la herramienta de guids

public static bool InstanceExists
{ // En el get de la propiedad se crea un mutex y nos informa en
// si el mutex ya existia o no. Creamos el mutex con nombre para
// poder localizarlo posteriormente. Tenemos que asegurarnos que
// el nombre del mutex va a ser único, por eso se usa un GUID.
get
{
bool notExists;
mutex = new Mutex(false, "Local\\" + AppGuid, out notExists);
return !notExists;
}
}

En el main de tu aplicación pones el siguiente código

if (!Form1.InstanceExists )
Application.Run(new Form1());

De esta forma, el main sólo ejecutará el formulario si el mutex no existe.