Metod 1: Använd trådmutexvariabler. Definiera mutexvariabler för att avgöra om en instans körs. Ändra Main()-funktionen i program.cs-filen till följande kod:
Notera: I programmet kör uttrycket System.Threading.Mutex = new System.Threading.Mutex (true, "single_test", out runone); för att skapa en mutexvariabel kör, där "single_test" är mutexnamnet, och när denna metod returneras, om en lokal mutex eller ett specificerat namngivningssystem skapas, är det booleska värdet runone sant; falskt om det specificerade namngivningssystemet redan existerar. Namngivna mutexar är systemtäckande. Metod 2: Använd metoden att bedöma processen, innan vi kör programmet, tar vi reda på om det finns en process med samma namn i processen, och att den körande positionen också är samma process. Applicera klassen Process i namnrymden System.Diagnostics i C# för att implementera den, huvudkoden är följande: 1. Lägg till en funktion i program.cs filen enligt följande:
2. Byt huvudfunktionen () till följande kod:
Metod 3: Global atomär metod, innan du skapar ett program, kontrollera först den globala atomtabellen för att se om det finns en specifik atom A (tillagd vid skapandetillfället), och sluta skapa den när den finns, vilket indikerar att programmet har kört en instans; Om den inte finns, kör programmet och vill lägga till en specifik atom A i den globala atomtabellen; När du avslutar programmet, kom ihåg att släppa en specifik atom A, annars släpps den inte förrän datorn stängs av. C#-implementeringen är följande: 1. Deklarera WinAPI-funktionsgränssnittet
[System.Runtime.InteropServices.DllImport("kernel32.dll")] publik statisk extern UInt32 GlobalAddAtom (Sträng lpString); Lägg till atomer [System.Runtime.InteropServices.DllImport("kernel32.dll")] publik statisk extern UInt32 GlobalFindAtom (sträng lpString); Hitta atomer [System.Runtime.InteropServices.DllImport("kernel32.dll")] publik statisk extern UInt32 GlobalDeleteAtom(UInt32 nAtom); Ta bort atomer 2. Modifiera Main()-funktionen enligt följande:
3. Lägg till följande kod i FormClosed-händelsen: GlobalDeleteAtom(GlobalFindAtom ("jiaao_test")); Radera atomära "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Ovanstående är den grundläggande allmänna idén om att skapa ett ömsesidigt uteslutande program, och jag tycker personligen att den första metoden är den enklaste. |