Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo permitir que un programa C# ejecute solo una instancia a la vez

Cómo permitir que un programa C# ejecute solo una instancia a la vez

A veces necesitamos permitir que solo se ejecute una instancia de un programa a la vez. Hay muchas maneras de lograrlo.

I. Exclusión mutua de procesos

Principio: al obtener la lista de procesos del sistema, si se encuentra un proceso renombrado, significa que el programa ya se está ejecutando y el proceso que se está ejecutando recientemente sale. en este momento;

Implementación: método estático GetProcessesByName(string ProcessName) de la clase System.Diagnostics.Process

Process[] ps = Process.GetProcessesByName(Guo.exe); ps! = nullamp; ps.Length1){//Se encontró un proceso duplicado}

Escrito en el método principal para determinar si la longitud es mayor que 1, porque también está en la lista de procesos después del inicio. Longitud == 1;

Ventajas: Código simple;

Desventajas: Otros programas que se renombran lo llamarán por error (por ejemplo,

II. * ** Bloqueo de disfrute (archivo, registro)

Principio: al ejecutar el programa, cree *** valor de disfrute en una ubicación pública *** (por ejemplo, cree un archivo en un directorio fijo, o en una ubicación de registro fija, cree valor) y elimine el valor al salir del programa. Si se encuentra que el valor ya existe cuando se ejecuta, significa que el programa ya se está ejecutando y el proceso recién ejecutado se cierra. Ventajas; : La lógica es fácil de entender;

Desventajas: si el programa no sale correctamente, el valor ****-hedge no se eliminará, lo que provocará que el programa no se reinicie;

3.Mutex _mutex; staticvoidMain(string[ ] args){// Si es posible abrir un nuevo proceso boolcreateNew // Obtener el Guid del ensamblado como identificador único

Atributo guid_attr; = Attribute.Threading.Mutex(true

,guid ,

outcreateNew); if (false==createNew){//Buscar procesos duplicados}_mutex.ReleaseMutex();}} Ventajas: realmente permite que el mismo programa ejecute un solo proceso Desventajas: No disponible;