application.current.shutdown () لا
-
18-09-2019 - |
سؤال
العنوان حول هذا الموضوع. تطبيق WPF مع بعض الاشياء WCF ل IPC. أنا أتصل Application.Current.Shutdown()
ويستمر التطبيق بسعادة. اعتقدت Shutdown
كان من المفترض أن يكون لا يمكن وقفه.
ربما لأنه يتم استدعاء من خيط الخلفية؟ هل أحتاج إلى القيام ببعض ثبات المرسل؟
المحلول
يمكنك الحصول على استثناء عند الاتصال Application.Current.Shutdown
في أي مؤشر ترابط غير الرئيسي، لذلك أفترض لك حيث تستخدم "مثال المرسل" بشكل صحيح بالفعل.
في أي حال، هذا يجمع وانساء تطبيقا، لذلك إذا كان BIT Probatucher لا يبدو وكأنه ما لديك يمكنك إلقاء حباله في:
ThreadStart ts = delegate()
{
Dispatcher.BeginInvoke((Action)delegate()
{
Application.Current.Shutdown();
});
};
Thread t = new Thread(ts);
t.Start();
نصائح أخرى
في تجربتي، يجب أن يتم إنهاء جميع المواضيع بشكل صريح أو يتم وضع علامة على خيوط الخلفية من أجل إغلاق التطبيق.
فيما يلي مثال على طرد موضوع قراءة في الخلفية:
_readThread = new Thread(new ThreadStart(ReadThread));
_readThread.Name = "Receiver";
_readThread.Priority = ThreadPriority.Highest;
_readThread.IsBackground = true;
_readThread.Start();
ال IsBackground
الملكية هي المفتاح. بدون هذه المجموعة، لن ينتهي الخيط عند استدعاء إيقاف التشغيل.
أنا فقط الخبرة Application.Current.Shutdown
لا تعمل عندما أكون قيد التشغيل من Visual Studio. ضمن Visual Studio (إصدار 2010 على الأقل أنا أستخدمه) Application.Current.Shutdown
لا تفعل شيئا. إذا قمت بخطوة واحدة من خلالها تنفذ هذا الخط ثم يستمر. إذا قمت بتشغيل البرنامج (ككسيك) من مستكشف Windows Application.Current.Shutdown
يعمل بشكل جيد.
من المحتمل أن يكون هناك تفسير لذلك منذ أثناء تصحيح الأخطاء الأخرى نشطة، لكنني لا أستطيع أن أشرح ذلك.