Metode 1: Gunakan variabel mutex utas. Tentukan variabel muteks untuk menentukan apakah instans sedang berjalan. Ubah fungsi Main() di file program.cs ke kode berikut:
Catatan: Dalam program, pernyataan System.Threading.Mutex run = new System.Threading.Mutex(true, "single_test", out runone); untuk membuat variabel mutex run, di mana "single_test" adalah nama mutex, dan ketika metode ini kembali, jika mutex lokal atau mutex sistem penamaan yang ditentukan dibuat, nilai boolean runone adalah true; false jika sistem penamaan yang ditentukan mutexe sudah ada. Mutex bernama bersifat di seluruh sistem. Metode 2: Gunakan cara menilai proses, sebelum kita menjalankan program, kita menemukan apakah ada proses dengan nama yang sama dalam prosesnya, dan posisi berjalan juga merupakan proses yang sama. Terapkan kelas Process di namespace System.Diagnostics di C# untuk mengimplementasikannya, kode utamanya adalah sebagai berikut: 1. Tambahkan fungsi ke file program.cs sebagai berikut:
2. Ubah fungsi Main () ke kode berikut:
Metode 3: Metode atom global, sebelum membuat program, pertama-tama periksa tabel atom global untuk melihat apakah ada atom tertentu A (ditambahkan pada saat pembuatan), dan hentikan pembuatannya saat ada, menunjukkan bahwa program telah menjalankan instance; Jika tidak ada, jalankan program dan ingin menambahkan atom tertentu A ke tabel atom global; Saat keluar dari program, ingatlah untuk melepaskan atom A tertentu, jika tidak, atom tersebut tidak akan dilepaskan sampai komputer dimatikan. Implementasi C# adalah sebagai berikut: 1. Deklarasikan antarmuka fungsi WinAPI
[System.Runtime.InteropServices.DllImport("kernel32.dll")] publik statis extern UInt32 GlobalAddAtom(String lpString); Tambahkan atom [System.Runtime.InteropServices.DllImport("kernel32.dll")] publik statis extern UInt32 GlobalFindAtom(String lpString); Temukan atom [System.Runtime.InteropServices.DllImport("kernel32.dll")] publik statis eksternal UInt32 GlobalDeleteAtom(UInt32 nAtom); Hapus atom 2. Ubah fungsi Main() sebagai berikut:
3. Tambahkan kode berikut ke peristiwa FormClosed: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Hapus atom "jiaao_test" --------------------------------------*-------*--------*----------------------------------------------- Di atas adalah ide umum dasar untuk membuat program yang saling eksklusif, dan saya pribadi berpikir bahwa metode pertama adalah yang paling sederhana. |