Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk memastikan hanya satu contoh aplikasi WPF berjalan pada satu masa?

Bagaimana untuk memastikan hanya satu contoh aplikasi WPF berjalan pada satu masa?

Patricia Arquette
Lepaskan: 2025-02-02 07:31:09
asal
452 orang telah melayarinya

How to Ensure Only One Instance of a WPF Application Runs at a Time?

Melaksanakan tingkah laku tunggal dalam aplikasi WPF

Panduan ini menerangkan cara membina aplikasi WPF yang membolehkan hanya satu contoh untuk berjalan secara serentak. Ini dicapai menggunakan mutexes.

Memahami Mutexes

A mutex (pengecualian bersama) adalah primitif penyegerakan. Ia memastikan bahawa hanya satu proses yang dapat mengakses sumber bersama pada bila -bila masa. Di WPF, kami memanfaatkan mutexes untuk mengelakkan pelbagai contoh aplikasi daripada berjalan secara serentak.

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}");
    // ...
}
Salin selepas log masuk
bernama mutexes membolehkan penyegerakan merentasi pelbagai proses dan benang.

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.");
}
Salin selepas log masuk

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);
}
Salin selepas log masuk

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);
}
Salin selepas log masuk
Pendekatan yang komprehensif ini memastikan aplikasi WPF tunggal yang mantap, menghalang pelbagai contoh dari berjalan serentak. Ingat untuk memasukkan definisi yang diperlukan

(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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan