1. metode: Izmantojiet pavediena mutex mainīgos. Definējiet mutex mainīgos, lai noteiktu, vai instance darbojas. Main() failā program.cs mainiet uz šādu kodu:
Piezīme: Programmā paziņojums System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); lai izveidotu mutex mainīgo izpildi, kur "single_test" ir mutex nosaukums, un, kad šī metode atgriežas, ja tiek izveidots lokālais mutex vai norādīta nosaukumu sistēmas mutex, būla vērtība runone ir true; FALSE, ja norādītā nosaukumu sistēmas mutexe jau pastāv. Nosauktie muteksi ir sistēmas mērogā. 2. metode: Izmantojiet procesa vērtēšanas veidu, pirms mēs palaižam programmu, mēs noskaidrojam, vai procesā ir process ar tādu pašu nosaukumu, un arī darbības pozīcija ir tāds pats process. Lai to īstenotu, izmantojiet klasi Process System.Diagnostics nosaukumtelpā C#, galvenais kods ir šāds: 1. Pievienojiet funkciju program.cs failam šādi:
2. Mainiet funkciju Main () uz šādu kodu:
3. metode: Globālā atomu metode, pirms programmas izveides vispirms pārbaudiet globālo atomu tabulu, lai redzētu, vai ir konkrēts atoms A (pievienots izveides laikā), un pārtrauciet tā izveidi, kad tas pastāv, norādot, ka programma ir palaidusi instanci; Ja tā nepastāv, palaidiet programmu un vēlaties pievienot konkrētu atomu A globālajai atomu tabulai; Izejot no programmas, atcerieties atbrīvot konkrētu atomu A, pretējā gadījumā tas netiks atbrīvots, kamēr dators nav izslēgts. C# ieviešana ir šāda: 1. Deklarējiet WinAPI funkcijas interfeisu
[System.Runtime.InteropServices.DllImport("kernel32.dll")] publiskais statiskais ārējais UInt32 GlobalAddAtom(String lpString); Pievienot atomus [System.Runtime.InteropServices.DllImport("kernel32.dll")] publiskais statiskais ārējais UInt32 GlobalFindAtom(String lpString); Atrodiet atomus [System.Runtime.InteropServices.DllImport("kernel32.dll")] publiskais statiskais ārējais UInt32 GlobalDeleteAtom(UInt32 nAtom); Dzēst atomus 2. Modificējiet funkciju Main() šādi:
3. Pievienojiet šādu kodu notikumam FormClosed: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Dzēst atomu "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Iepriekš minētais ir pamata vispārējā ideja par savstarpēji izslēdzošas programmas izveidi, un es personīgi domāju, ka pirmā metode ir visvienkāršākā. |