سؤال

أواجه خطأً غريباً للغاية هنا ولست متأكدًا مما إذا كنت أتابع الطريق الصحيح لحله أو حتى كيفية حله.

فيما يلي المشكلة التي أواجهها: أبدأ تصحيح تطبيق WPF الذي يستخدم log4net و nhibernate و linq إلى nhibernate ، وعندما أحاول الحصول على كيان من قاعدة البيانات الخاصة بي ، وأحيانًا تكون معلقة لفترة طويلة من الوقت ، وبعد ذلك يتم فتح مربع حوار استثناء يعرض رسالة تحتوي على المعلومات التالية على سيتوليتشيدويدروك MDA:

لم يتمكن CLR من الانتقال من COM CONTEXT 0x34FC1A0 إلى COM CONTEXT 0x34FC258 لمدة 60 ثانية. من المرجح أن يكون الخيط الذي يمتلك سياق/شقة الوجهة إما إما القيام بانتظار غير ضخ أو معالجة عملية طويلة جدًا دون ضخ رسائل Windows. هذا الموقف بشكل عام له تأثير سلبي للأداء وقد يؤدي إلى أن يصبح التطبيق غير مستجيب أو استخدام ذاكرة يتراكم باستمرار مع مرور الوقت. لتجنب هذا

لقد قمت بنسخ ملفات التعليمات البرمجية إلى مشروع جديد وحذفت المشروع القديم لمعرفة ما إذا كان بإمكاني جعل هذه الرسالة تختفي ، معتقدين أن لها علاقة بتكوين بلدي. بدأت في إضافة بعض الأشياء في وقت واحد لمعرفة سبب ذلك ، وعندما قمت بتضمين رمز تكوين log4net ظهر الأخطاء مرة أخرى. أولاً ، قمت بتضمينه من خلال AssemblyInfo وتكوين رمز الحوض اللاحق عند بدء تشغيل التطبيق ، ولم يتغير أي شيء على الإطلاق :(

لذا ، ها هي النتائج التي توصلت إليها:

  • يحدث ذلك فقط عندما أستخدم log4net.
  • يحدث ذلك عندما يقوم Nhibernate بتحميل كيان من قاعدة البيانات (التحميل كسول).

لا أعرف ما قد يكون مصدر هذا الخطأ. يحدث ذلك فقط عند تصحيح الأخطاء في Visual Studio. لقد حاولت اتباع الخطوات في قسم "تمكين وتعطيل MDAs" في الصفحة التالية: http://msdn.microsoft.com/en-us/library/d21c150d.aspx, ، لكن هذا لا يعمل أيضًا ، لا يزال مقابل معلق ويزيد استخدام الذاكرة.

عندما أقوم بتشغيل البرنامج عادةً لا يحدث أي من هذا ، لذلك أنا متأكد من أن هذا ليس حالة من المسدود ، كما يوحي هذا السؤال: سيتوكسويشديك (لقد جربت أيضًا الحلول المنشورة هناك).

بسبب ذلك ، قررت تعطيل Log4Net وتمكينه مرة أخرى عند نشر تطبيقي.

أقوم بنشر هذا السؤال لمعرفة ما إذا كان شخص آخر قد واجه هذا الخطأ أو إذا كان لدى شخص ما بعض الاقتراحات حول كيفية حلها. أخيرًا ، قد يساعد شخص آخر في مواجهة هذه المشكلة ذاتها.

شكرا مقدما،

خورخي فارغاس.

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

المحلول

عند استخدام DebuGappender يتم تحميل جميع الكيانات في قواعد البيانات وجميع بياناتها المكتوبة إلى ناتج التصحيح. كان ذلك يسبب CountextswitchDeadlock MDA منذ أن استغرق الأمر أكثر من 60 ثانية.

تعطيل تصحيح الأخطاء حل مشكلتي.

بفضل موريسيو شيفر على النصيحة.

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