RSS 2.0 Atom 1.0 CDF  
JASoft.org - Detectar la existencia de una instancia previa de nuestra aplicación
El blog de José Manuel Alarcón Aguín. Programación .NET y mucho más...
 

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).

Tuesday, May 31, 2005 6:55:00 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Programación  |  Trackback
Copyright © 2008 José Manuel Alarcón Aguín. All rights reserved.