Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk membuat aplikasi WPF tunggal menggunakan mutexes?

Bagaimana untuk membuat aplikasi WPF tunggal menggunakan mutexes?

Barbara Streisand
Barbara Streisandasal
2025-02-02 07:16:09356semak imbas

How to Create a Single-Instance WPF Application Using Mutexes?

c# WPF aplikasi contoh sebenar tunggal

Dalam C#, menggunakan WPF untuk membuat aplikasi contoh tunggal memerlukan teknologi yang dipanggil badan yang saling eksklusif. Pengecualian bersama bertujuan untuk memastikan hanya satu contoh aplikasi yang dapat dijalankan pada satu masa.

memahami teguran bersama

badan bersama bertindak sebagai pencari yang bertindak sebagai sumber permohonan. Apabila permohonan itu membuat teguran bersama, ia sebenarnya "mengunci" sumber -sumber ini untuk mengelakkan sebarang contoh aplikasi lain daripada mengaksesnya. Mekanisme ini memastikan hanya satu contoh aplikasi yang dapat dilakukan pada satu masa.

Buat satu contoh aplikasi WPF

Untuk membuat satu permohonan WPF contoh, sila ikuti langkah -langkah di bawah: <.> 1. Pembangunan badan eksklusif bersama:

Dalam kod aplikasi, mengisytiharkan objek Mutex statik.

Parameter ini menentukan bahawa badan eksklusif yang dimiliki pada mulanya dimiliki oleh aplikasi. Pengenal pasti ini memastikan tiada aplikasi lain boleh menggunakan badan bersama yang sama.

<.> 2. Semak pemilikan badan yang saling eksklusif:

true

Apabila aplikasi bermula, gunakan kaedah
<code class="language-csharp">static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}");</code>
untuk memeriksa sama ada ia mempunyai pengecualian bersama. Jika kaedah ini kembali , ini bermakna bahawa permohonan adalah contoh pertama yang dapat terus dilaksanakan. Jika dikembalikan, ini bermakna contoh lain sudah berjalan.

<.> 3. Beritahu contoh yang ada:

WaitOne() Jika permohonan itu bukan contoh pertama, gunakan fungsi true untuk menghantar mesej tersuai untuk memaklumkan percubaan permulaan contoh yang berlari dari contoh kedua. false

<code class="language-csharp">if (mutex.WaitOne(TimeSpan.Zero, true))
{
    // 应用程序的第一个实例
}
else
{
    // 第二个实例,通知第一个实例并退出
}</code>
<.> 4. Rawatan mesej tersuai:

Dalam keadaan berjalan, mesej tersuai diproses dengan menulis semula kaedah

tetingkap utama.

PostMessage()

<.> 5. Tunjukkan contoh yang sedang berjalan:
<code class="language-csharp">NativeMethods.PostMessage(
    (IntPtr)NativeMethods.HWND_BROADCAST,
    NativeMethods.WM_SHOWME,
    IntPtr.Zero,
    IntPtr.Zero);</code>

Apabila contoh berjalan menerima mesej tersuai, anda boleh menggunakan kaedah untuk meletakkannya di meja depan.

WndProc Dengan melaksanakan langkah -langkah ini, anda boleh membuat satu contoh aplikasi WPF untuk memastikan bahawa hanya satu contoh aplikasi yang aktif pada satu masa.

Atas ialah kandungan terperinci Bagaimana untuk membuat aplikasi WPF tunggal menggunakan mutexes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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