Metóda 1: Použi vláknové mutex premenné. Definujte mutex premenné na zistenie, či inštancia beží. Zmeňte funkciu Main() v program.cs súbore na nasledujúci kód:
Poznámka: V programe príkaz System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); Na vytvorenie mutex premennej spustite premennú, kde "single_test" je mutex meno, a keď sa táto metóda vráti, ak je vytvorený lokálny mutex alebo špecifikovaný systém pomenovania mutex, booleovská hodnota runone je pravdivá; nepravda, ak už existuje špecifikovaný systém pomenovania mutexe. Pomenované mutexy sú systémovo rozšírené. Metóda 2: Použite spôsob hodnotenia procesu, pred spustením programu zistíme, či je v procese proces s rovnakým názvom a či je bežiaca pozícia tiež rovnaký proces. Použite triedu Process v mennom priestore System.Diagnostics v C# na jej implementáciu, hlavný kód je nasledovný: 1. Pridajte funkciu do program.cs súboru nasledovne:
2. Zmeňte hlavnú () funkciu na nasledujúci kód:
Metóda 3: Globálna atómová metóda, pred vytvorením programu najprv skontrolujte globálnu atómovú tabuľku, či existuje konkrétny atóm A (pridaný pri vytvorení), a prestaňte ho vytvárať, keď existuje, čo znamená, že program spustil inštanciu; Ak neexistuje, spustite program a chcete pridať konkrétny atóm A do globálnej atómovej tabuľky; Pri ukončení programu nezabudnite uvoľniť konkrétny atóm A, inak nebude uvoľnený, kým nebude počítač vypnutý. Implementácia v C# je nasledovná: 1. Deklarovať funkčné rozhranie WinAPI
[System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalAddAtom(String lpString); Pridať atómy [System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalFindAtom(String lpString); Nájdite atómy [System.Runtime.InteropServices.DllImport("kernel32.dll")] verejný statický extern UInt32 GlobalDeleteAtom(UInt32 nAtom); Vymažte atómy 2. Upraviť funkciu Main() nasledovne:
3. Pridajte nasledujúci kód k udalosti FormClosed: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Vymažte atómové "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Vyššie uvedené je základná všeobecná myšlienka vytvorenia vzájomne vylučujúceho sa programu a osobne si myslím, že prvá metóda je najjednoduchšia. |