Metoda 1: Uporabi spremenljivke Thread Mutex. Določite mutex spremenljivke, da ugotovite, ali se instanca izvaja. Spremenite funkcijo Main() v program.cs datoteki v naslednjo kodo:
Opomba: V programu je ukaz System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); za ustvarjanje mutex spremenljivke se izvede, kjer je "single_test" ime mutex, in ko se ta metoda vrne, če je ustvarjen lokalni mutex ali določen sistem poimenovanja mutex, je booleova vrednost runone resnična; napačno, če že obstaja določeni sistem poimenovanja mutexe. Poimenovani muteksi so sistemski. Metoda 2: Uporabite način ocenjevanja procesa, preden zaženemo program, ugotovimo, ali je v procesu proces z enakim imenom in ali je položaj v teku tudi isti proces. Za implementacijo uporabite razred Process v imenskem prostoru System.Diagnostics v C#, glavna koda je naslednja: 1. Dodajte funkcijo v program.cs datoteko na naslednji način:
2. Spremenite funkcijo Main () v naslednjo kodo:
Metoda 3: Globalna atomska metoda, preden ustvariš program, najprej preveri globalno atomsko tabelo, ali obstaja določen atom A (dodan ob ustvarjanju), in prenehaj ustvarjati, ko obstaja, kar pomeni, da je program zagnal instanco; Če ne obstaja, zaženite program in želite dodati določen atom A v globalno atomsko tabelo; Ko zapuščate program, ne pozabite sprostiti določenega atoma A, sicer se ne bo sprostil, dokler računalnik ne bo izklopljen. Implementacija v C# je naslednja: 1. Deklarirajte funkcijski vmesnik WinAPI
[System.Runtime.InteropServices.DllImport("kernel32.dll")] javni statični zunanji UInt32 GlobalAddAtom(String lpString); Dodaj atome [System.Runtime.InteropServices.DllImport("kernel32.dll")] javni statični zunanji UInt32 GlobalFindAtom(String lpString); Najdi atome [System.Runtime.InteropServices.DllImport("kernel32.dll")] javni statični zunanji UInt32 GlobalDeleteAtom(UInt32 nAtom); Izbriši atome 2. Spremenite funkcijo Main() na naslednji način:
3. Dodajte naslednjo kodo k dogodku FormClosed: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Izbriši atomski "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Zgoraj navedeno je osnovna splošna ideja ustvarjanja medsebojno izključujočega programa, in osebno menim, da je prva metoda najpreprostejša. |