1. módszer: Használj thread mutex változókat. Definiáljuk a mutex változókat, hogy megállapítsuk, fut-e egy példány. A program.cs fájlban a Main() függvényt a következő kódra változtatni:
Megjegyzés: A programban a System.Threading.Mutex utasítás run = new System.Threading.Mutex(true, "single_test", out runone); Mutex változó létrehozásához futás, ahol a "single_test" a mutex név, és amikor ez a metódus visszatér, ha helyi mutex vagy meghatározott elnevezési rendszer keletkezik, a runone boolean érték true; hamis, ha a megadott nevezési rendszer mutexe már létezik. A nevelt mutexek rendszerszinten elérhetők. 2. módszer: A folyamat megítélésének módját használjuk, mielőtt elindítanánk a programot, megvizsgáljuk, hogy van-e ugyanolyan nevű folyamat, és a futó pozíció is ugyanaz a folyamat. Alkalmazzuk a Process osztályt a System.Diagnostics névtérben C#-ban a megvalósításhoz, a fő kód a következő: 1. Csatolj egy függvényt a program.cs fájlba a következőként:
2. Változtasd a fő () funkciót a következő kódokra:
3. módszer: Globális atom módszer, mielőtt programot készítsen, először ellenőrizze a globális atomtáblázatot, hogy van-e egy adott atom A (amelyet a létrehozáskor adtak be), majd akkor állítsuk abba, amikor az létezik, jelezve, hogy a program futtatott egy példányt; Ha nem létezik, indítsd a programot, és szeretnék hozzáadni egy adott atom A-t a globális atomtáblázatba; A programból való kilépéskor ne felejtsd el egy adott atom A-t felszabadítani, különben csak akkor szabadul, ha a számítógépet ki nem kapcsoljuk. A C# megvalósítás a következő: 1. Deklarálni a WinAPI funkcióinterfészt
[System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalAddAtom(String lpString); Atomok hozzáadása [System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalFindAtom(string lpString); Találj atomokat [System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); Atomok törlése 2. Módosítsuk a Main() függvényt az alábbiak szerint:
3. Adja hozzá a következő kódot a FormClosed eseményhez: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Töröld az atomic "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- A fentiek az alapvető általános elképzelés egy egymást kizáró program létrehozásáról, és személy szerint úgy gondolom, hogy az első módszer a legegyszerűbb. |