سؤال

في تطبيق 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 التي تؤدي بعض التشغيل غير القانوني.

أعتقد أنك يجب ألا تقاتل أعراض مشكلتك. لا ينبغي أن تحدث الاستثناءات غير المعلنة في المقام الأول.

هل لديك أي أدلة على سببها؟

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