1 metodas: Naudokite gijos mutex kintamuosius. Apibrėžkite mutex kintamuosius, kad nustatytumėte, ar egzempliorius veikia. Pakeiskite program.cs failo funkciją Main() į šį kodą:
Pastaba: Programoje teiginys System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); sukurti mutex kintamojo vykdymą, kur "single_test" yra mutex pavadinimas, ir kai šis metodas grįžta, jei sukuriamas vietinis mutex arba nurodyta pavadinimų sistemos mutex, loginė reikšmė runone yra true; False, jei nurodytas pavadinimų suteikimo sistemos mutexe jau yra. Pavadinti muteksai yra visoje sistemoje. 2 būdas: Naudokite proceso vertinimo būdą, prieš paleisdami programą, išsiaiškiname, ar procese yra procesas tuo pačiu pavadinimu, o bėgimo padėtis taip pat yra tas pats procesas. Norėdami ją įgyvendinti, pritaikykite "Process" klasę "System.Diagnostics" vardų srityje C#, pagrindinis kodas yra toks: 1. Pridėkite funkciją prie program.cs failo taip:
2. Pakeiskite funkciją Main () į šį kodą:
3 metodas: Pasaulinis atominis metodas, prieš kurdami programą, pirmiausia patikrinkite pasaulinę atominę lentelę, kad pamatytumėte, ar yra konkretus atomas A (pridėtas kūrimo metu), ir nustokite jį kurti, kai jis egzistuoja, nurodydami, kad programa paleido egzempliorių; Jei jo nėra, paleiskite programą ir norite pridėti konkretų atomą A į pasaulinę atominę lentelę; Išeidami iš programos nepamirškite išleisti konkretaus atomo A, kitaip jis nebus išleistas, kol kompiuteris nebus išjungtas. C# įgyvendinimas yra toks: 1. Deklaruokite WinAPI funkcijos sąsają
[System.Runtime.InteropServices.DllImport("kernel32.dll")] viešasis statinis išorinis UInt32 GlobalAddAtom(String lpString); Pridėti atomus [System.Runtime.InteropServices.DllImport("kernel32.dll")] viešasis statinis išorinis UInt32 GlobalFindAtom(String lpString); Raskite atomus [System.Runtime.InteropServices.DllImport("kernel32.dll")] viešasis statinis išorinis UInt32 GlobalDeleteAtom(UInt32 nAtom); Ištrinti atomus 2. Pakeiskite funkciją Main() taip:
3. Pridėkite šį kodą prie FormClosed įvykio: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Naikinti atominį "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Tai yra pagrindinė bendra idėja sukurti abipusiai nesuderinamą programą, ir aš asmeniškai manau, kad pirmasis metodas yra paprasčiausias. |