Meetod 1: Kasuta lõime mutex-muutujaid. Defineeri mutex-muutujad, et määrata, kas eksemplar töötab. Muuda program.cs faili Main() funktsioon järgmiseks koodiks:
Märkus: Programmis on väide System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); mutex-muutuja loomiseks käivita, kus "single_test" on mutexi nimi, ja kui see meetod tagastatakse, siis kui luuakse lokaalne mutex või määratud nimetussüsteem mutex, on boole'i väärtus runone tõene; vale, kui määratud nimetamissüsteem mutexe juba eksisteerib. Nimega muteksid on kogu süsteemis. Meetod 2: Kasuta protsessi hindamise meetodit, enne programmi käivitamist leiame, kas protsessis on sama nimega protsess ja kas käivitav asend on samuti sama protsess. Rakenda Process klass System.Diagnostics nimeruumis C#-s, et seda rakendada, põhikood on järgmine: 1. Lisa program.cs faili funktsioon järgmiselt:
2. Muuda peamine () funktsioon järgmiseks koodiks:
Meetod 3: Globaalne aatomimeetod, enne programmi loomist kontrollige esmalt globaalset aatomtabelit, kas on olemas konkreetne aatom A (lisatud loomise ajal), ja lõpetage selle loomine, kui see eksisteerib, mis näitab, et programm on käivitanud instantsi; Kui seda ei eksisteeri, käivita programm ja soovi lisada konkreetne aatom A globaalsesse aatomitabelisse; Programmist väljudes pea meeles vabastada konkreetne aatom A, vastasel juhul ei vabastata seda enne, kui arvuti on välja lülitatud. C# rakendus on järgmine: 1. Deklareeri WinAPI funktsiooniliides
[System.Runtime.InteropServices.DllImport("kernel32.dll")] avalik staatiline ekstern UInt32 GlobalAddAtom (string lpString); Lisa aatomid [System.Runtime.InteropServices.DllImport("kernel32.dll")] avalik staatiline ekstern UInt32 GlobalFindAtom(string lpString); Leia aatomid [System.Runtime.InteropServices.DllImport("kernel32.dll")] avalik staatiline ekstern UInt32 GlobalDeleteAtom(UInt32 nAtom); Kustuta aatomid 2. Muuda Main() funktsiooni järgmiselt:
3. Lisa FormClosed üritusele järgmine kood: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Kustuta aatomiline "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Ülaltoodud on üldine idee teineteist välistava programmi loomiseks ning minu arvates on esimene meetod kõige lihtsam. |