Método 1: Use variáveis mutex de thread. Defina variáveis mutex para determinar se uma instância está em execução. Mude a função Main() no arquivo program.cs para o seguinte código:
Nota: No programa, a instrução System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); para criar uma variável mutex, executar, onde "single_test" é o nome mutex, e quando esse método retorna, se um mutex local ou um sistema de nomenclatura especificado for criado, o valor booleano runone é verdadeiro; false se o sistema de nomenclatura especificado mutexe já existir. Mutexes nomeados são abrangentes em todo o sistema. Método 2: Use a forma de julgar o processo, antes de executarmos o programa, encontramos se há um processo com o mesmo nome no processo, e se a posição de execução também é o mesmo processo. Aplique a classe Process no namespace System.Diagnostics em C# para implementá-la, o código principal é o seguinte: 1. Adicionar uma função ao arquivo program.cs da seguinte forma:
2. Alterar a função Principal () para o seguinte código:
Método 3: Método atômico global, antes de criar um programa, verifique primeiro a tabela atômica global para ver se há um átomo específico A (adicionado no momento da criação) e pare de criá-lo quando ele existe, indicando que o programa executou uma instância; Se não existir, execute o programa e queira adicionar um átomo específico A à tabela atômica global; Ao sair do programa, lembre-se de liberar um átomo específico A, caso contrário, ele não será liberado até que o computador seja desligado. A implementação do C# é a seguinte: 1. Declarar a interface da função WinAPI
[System.Runtime.InteropServices.DllImport("kernel32.dll")] externo estático público UInt32 GlobalAddAtom(String lpString); Adicionar átomos [System.Runtime.InteropServices.DllImport("kernel32.dll")] externa estática pública UInt32 GlobalFindAtom(String lpString); Encontre átomos [System.Runtime.InteropServices.DllImport("kernel32.dll")] externo estático público UInt32 GlobalDeleteAtom(UInt32 nAtom); Exclua átomos 2. Modificar a função Main() da seguinte forma:
3. Adicione o seguinte código ao evento FormCloseded: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Exclua o "jiaao_test" atômico --------------------------------------*-------*--------*----------------------------------------------- O acima é a ideia geral básica de criar um programa mutuamente exclusivo, e eu pessoalmente acho que o primeiro método é o mais simples. |