Memahami Mutexes
Butiran pelaksanaan
Menggunakan Mutexes bernama:
Kaedah pilihan melibatkan membuat mutex bernama dalam titik masuk utama aplikasi anda:
static class Program { static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}"); // ... }
Memperolehi mutex:
Untuk menentukan sama ada contoh lain sudah berjalan, kami menggunakan kaedah: WaitOne
if (mutex.WaitOne(TimeSpan.Zero, true)) { // Mutex acquired; application can start Application.Run(new MainWindow()); mutex.ReleaseMutex(); } else { // Mutex unavailable; another instance is active MessageBox.Show("An instance is already running."); }
Pilihan: memberitahu contoh yang ada:
Untuk pengalaman pengguna yang dipertingkatkan, anda boleh memberitahu contoh berjalan apabila pelancaran baru dicuba. Ini dilakukan dengan menggunakan: PostMessage
if (!mutex.WaitOne(TimeSpan.Zero, true)) { NativeMethods.PostMessage( (IntPtr)NativeMethods.HWND_BROADCAST, NativeMethods.WM_SHOWME, IntPtr.Zero, IntPtr.Zero); }
Mengendalikan mesej Win32 tersuai:
di tetingkap utama anda, mengatasi untuk mendengar mesej tersuai dan bawa tetingkap yang ada ke latar depan: WndProc
protected override void WndProc(ref Message m) { if (m.Msg == NativeMethods.WM_SHOWME) { Activate(); // Bring to front } base.WndProc(ref m); }
(tidak ditunjukkan di sini untuk keringkasan). NativeMethods
Atas ialah kandungan terperinci Bagaimana untuk memastikan hanya satu contoh aplikasi WPF berjalan pada satu masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!