Metode 1: Brug trådmutex-variabler. Definér mutex-variabler for at afgøre, om en instans kører. Ændr Main()-funktionen i program.cs-filen til følgende kode:
Bemærk: I programmet kører sætningen System.Threading.Mutex = ny System.Threading.Mutex (true, "single_test", ud runone); for at oprette en mutexvariabel kør, hvor "single_test" er mutex-navnet, og når denne metode returneres, hvis en lokal mutex eller et specificeret navngivningssystem oprettes, er boolean-værdien runone sand; falsk, hvis det specificerede navngivningssystem-mutexe allerede eksisterer. Navngivne mutexer er systemdækkende. Metode 2: Brug metoden til at bedømme processen, før vi kører programmet, finder vi ud af, om der er en proces med samme navn i processen, og om kørende position også er den samme proces. Anvend Process-klassen i System.Diagnostics-navnerummet i C# for at implementere den, hovedkoden er som følger: 1. Tilføj en funktion til program.cs filen som følger:
2. Ændre hovedfunktionen () til følgende kode:
Metode 3: Global atomar metode, før du opretter et program, tjek først den globale atomare tabel for at se, om der er et specifikt atom A (tilføjet ved oprettelsen), og stop oprettelsen af det, når det eksisterer, hvilket indikerer, at programmet har kørt en instans; Hvis den ikke findes, kør programmet og vil tilføje et specifikt atom A til den globale atomtabel; Når du afslutter programmet, skal du huske at frigive et specifikt atom A, ellers bliver det ikke frigivet, før computeren er slukket. C#-implementeringen er som følger: 1. Deklarer WinAPI-funktionsgrænsefladen
[System.Runtime.InteropServices.DllImport("kernel32.dll")] offentlig statisk ekstern UInt32 GlobalAddAtom (streng lpString); Tilføj atomer [System.Runtime.InteropServices.DllImport("kernel32.dll")] offentlig statisk ekstern UInt32 GlobalFindAtom (Streng lpString); Find atomer [System.Runtime.InteropServices.DllImport("kernel32.dll")] offentlig statisk ekstern UInt32 GlobalDeleteAtom(UInt32 nAtom); Slet atomer 2. Ændr Main()-funktionen som følger:
3. Tilføj følgende kode til FormClosed-begivenheden: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Slet atomar "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Ovenstående er den grundlæggende generelle idé om at skabe et gensidigt udelukkende program, og jeg mener personligt, at den første metode er den simpleste. |