الحصول على حوار الإبلاغ عن خطأ Windows
سؤال
في تطبيق C# الخاص بي ، حتى أنني أتعامل مع الاستثناء:
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
ثم في معالج عرض مربع الحوار وقم بتطبيق.
كيفية منع حوار الإبلاغ عن خطأ Windows من الظهور؟
في الواقع ، إذا تم طرح الاستثناء من مُنشئ النماذج الرئيسية ، فإن البرنامج ينتهي بتقرير Windows Error DLG. وإلا إذا كان من موقع آخر من موضوع واجهة المستخدم ، ثم كما هو متوقع.
المحلول
ستحتاج إلى إنهاء التطبيق بنفسك. هذا سيفعل ذلك:
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
var ex = e.ExceptionObject as Exception;
MessageBox.Show(ex.ToString());
if (!System.Diagnostics.Debugger.IsAttached)
Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(ex));
}
نصائح أخرى
يتجاوز الحوار الذي يعرض اختيار إرسال تقرير خطأ أو عدم إرساله إلى Microsoft. قد يحدث هذا إذا كنت تستخدم كتل غير آمنة {} أو كنت تستخدم p/invoke التي تؤدي بعض التشغيل غير القانوني.
أعتقد أنك يجب ألا تقاتل أعراض مشكلتك. لا ينبغي أن تحدث الاستثناءات غير المعلنة في المقام الأول.
هل لديك أي أدلة على سببها؟
لا تنتمي إلى StackOverflow