سؤال

أرغب في الحصول على مربع حوار Windows Default Forms-Undhand-Devecte عندما يواجه تطبيق C# الخاص بي. في VS 2005 عندما أقوم بإيقاف تصحيح الأخطاء في app.conf مثل هذا:

<configuration>
   <system.windows.forms jitDebugging="false" />
<configuration>

يتصرف التطبيق بشكل صحيح ويعرض حوار Windows UE الافتراضي ، مع متابعة ، والاستقالة ، ومكدس الاتصال وجميع.

ومع ذلك ، في VS 2008 ، على نفس الجهاز أو مختلفًا ، على الرغم من أنني لا أزال أحصل على مربع الحوار الافتراضي .NET Unhandled-Deviception ، مع تصحيح الأخطاء وإرسال تقرير ولا أرسل أزرارًا.

كيف يمكنني جعل تطبيق VS 2008 يتصرف مثل التطبيق الذي أقوم به في VS 2005 ، لإظهار مربع حوار Windows Forms UE؟

من فضلك لا تنصح بالاستخدام

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

فقط لأنني لا أستخدم معالجًا مخصصًا في مشروع VS 2005 الخاص بي ، لماذا يمكنني استخدامه في VS 2008؟ أريد أن أترك هذه الوظيفة تفعل CLR.

أي مساعدة موضع تقدير

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

المحلول

أنت تتحدث عن ميزات معالجة الاستثناءات المختلفة. ال ThreadExceptionDialog ترى مع أزرار الإقلاع عن التدخين ومتابعة Application.ThreadException حدث. لن يظهر إلا إذا حدث الاستثناء في سلسلة واجهة المستخدم ، عندما يلقي معالج الأحداث الذي يعمل استجابة لرسالة Windows استثناء. ومع ذلك ، فإن أي استثناء في موضوع العامل سيخسر البرنامج من خلال AppDomain.UnhandledException.

لا يمكنك التعامل مع هذا الأخير ، والبرنامج قد مات ولا يمكنه المتابعة. عرض ThreadExceptionDialog لا معنى له.

يمكنك جعل البرنامج قنبلة باستمرار عن طريق تعطيل حدث ThreadException عن طريق استدعاء Application.SetUnHandleDexceptionMode (). الآن سيؤدي كل استثناء غير معقد إلى تشغيل AppDomain.UnhandledException وإنهاء البرنامج. ربما هذا ليس ما تريد ولكن هو الخيار الحكيم.

لاحظ أيضًا أنه يتم تعطيل حدث ThreadException عند تشغيل البرنامج باستخدام تصحيح الأخطاء. وهذا هو السبب في أنك ترى فرقًا في VS2008. لم تكن هناك أي تغييرات.

نصائح أخرى

الجواب من قبل هانز المارة يبدو معقول. ومع ذلك ، على الرغم من أنك تقول أنك لا تريد أن أوصي معالج على AppDomain.CurrentDomain.UnhandledException للتأكد من تحديد ما يحدث عندما يتعطل طلبك بشكل غير متوقع.

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