En Visual Basic "clásico" existía una propiedad del objeto App llamada PrevInstance que permitía averiguar de manera sencilla si ya se estaba ejecutando la aplicación actual, de forma que era inmediato evitar que se ejecutase dos veces el mismo programa.

En .NET no existe nada similar pero es muy fácil simularlo gracias a la clase Process del espacio de nombres System.Diagnostics. El siguiente código permite conseguirlo:

 private static bool PrevInstance()
 {
      Process[] procesos = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
      return (procesos.Length > 1);
 }

Lo que hace es buscar los procesos existentes que tengan el mismo nombre que el proceso actual. Si hay más de uno es que ya se está ejecutando la aplicación y por lo tanto podemos decidir no continuar.

Existen otras técnicas para conseguir el mismo efecto (por ejemplo usando Mutexes o marcadores globales de este estilo que son mucho más seguros), pero este es sin duda el más sencillo y la mayor parte de las veces no da ningún problema (a menos que haya otros programas diferentes pero con el mismo nombre ejecutándose, cosa poco común).

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA