سؤال

لقد كتبت تطبيق WPF صغير أنه عندما يقلل "مغلق" إلى صينية النظام (متطلبات العميل). نقر نقرًا مزدوجًا للملوثات العضوية الثابتة احتياطيًا ، أو نقرًا بزر الماوس الأيمن يعطي قائمة سياق للخروج.

ولكن إذا تم تقليل التطبيق إلى الحد الأدنى ، وانتقل المستخدمون إلى البدء-> جميع البرامج-> التطبيق الذي يبدأ مثيلًا جديدًا.

ما (في C#) الذي أحتاج إلى القيام به للحصول على التطبيق لزيادة مثيل التشغيل إلى الحد الأقصى إذا قام المستخدم بذلك بدلاً من إطلاق مثيل جديد؟

شكرًا!

هل كانت مفيدة؟

المحلول

هذه إجابه من Jon Skeet يناقش استخدام Mutex للقيام بذلك

Mutex هو الطريق للذهاب. إنه أقل هشاشة بكثير من استخدام أسماء العمليات وما إلى ذلك.

ومع ذلك ، تحتاج إلى التأكد من أن Mutex لم يتم جمع القمامة. في حالة الخدمة (التي تعتمد على الحدث بدلاً من أن يكون لها طريقة "رئيسية" تعمل حتى الانتهاء) ، فإن الطريقة الأكثر عقلانية للقيام بذلك هي على الأرجح وضعها في متغير ثابت.

التخلص من Mutex عندما تتوقف الخدمة ، لذلك لا تحتاج إلى انتظار الانتهاء أو أي شيء من هذا القبيل.

يعطي ماثيو بريندلي هذا المثال في نفس السؤال إجابته

[STAThread]
static void Main() 
{
   using(Mutex mutex = new Mutex(false, "Global\\" + appGuid))
   {
      if(!mutex.WaitOne(0, false))
      {
         MessageBox.Show("Instance already running");
         return;
      }

      Application.Run(new Form1());
   }
}

لزيادة التطبيق الآخر ، ستحتاج إلى إرسال الرسالة لزيادة الحد الأقصى. انظر هذا المقال على إرسال الرسالة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top