سؤال

ركضت في هذا الاستثناء أمس:

Win32Exception: fehler beim erstellen des fensterhandles

قد يترجم:

Win32Exception: خطأ أثناء إنشاء WindowHandle

أنا أعرف كيفية حل هذا (حتى كتب قصيرة مشاركة مدونة حول الموضوع - باللغة الألمانية)

لكنني لا أعرف من أين قد يكون طلبي "تسريب" غير محدد، لا يزال يحتوي على مقابض النوافذ.

هل هناك أي طريقة للكشف / العثور على حالات ذلك

  • ينفذ IDisposable
  • يملك Parent == null

يبدو أن الكائنات التي تطابق هذه القيود مرشحون جيدين.

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

المحلول

أي ملف تعريف الذاكرة اللائق سيظهر لك مثيلات التحكم. لن يكونوا يتم جمعهم من القمامة، وممتلكات مقبضتهم تبقيهم على قيد الحياة. سيكون هناك ما يقرب من 10000 منهم. يمكنك أيضا رؤيته أيضا مع إدارة المهام واستخدام طريقة العرض + تحديد الأعمدة وتحديد كائنات المستخدمين. مشاهدة زيادة العد كما كنت تختبر التطبيق يجب أن يوفر تلميح لائق.

يجب أن تقضي مراجعة التعليمات البرمجية في طريق طويل أيضا، ليس هناك العديد من الطرق الممكنة لتسريب نافذة. ابحث أولا عن الحالات الأكثر شيوعا، والرمز الذي يستدعي Controls.Clear () أو التحكم .Remove / at () ولكن لا يتخلص أيضا عنصر التحكم. الحالة المشتركة التالية هي فئة SystemEvents، عليك إلغاء الاشتراك بشكل صريح في أحداثه. الباقي ليس من السهل العثور عليه، كنت بحاجة إلى هذا التعريف.

العثور على مقابض نفسك في وقت التشغيل ممكن من الناحية الفنية مع الانعكاس. يتم تخزين المقابض في system.internal.handlecollector.handletypes []. حسنا، من الناحية الفنية.

نصائح أخرى

كل كائن ينفذ IDisposable لديه أ Dispose طريقة. يجب استدعاء هذه الطريقة عند عدم حاجة الكائن. هل تم استخدامه بطريقة واحدة فقط، تحيط به using بيان (مكالمات Dispose تلقائيا). إذا كان متغير عضو من صفك، فيجب أن ينفذ الفصل الخاص بك IDisposable بحد ذاتها. fxcop. لديه قاعدة تحقق لهذا.

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

تحقق خصيصا حالة الالتزام بالأحداث من عناصر التحكم غير الموجودة من قبل الملحق، في هذه الحالة، في هذه الحالة، يجب عليك دائما فصل من الأحداث عند التخلص منها عناصر التحكم، إن لم يكن الأمر لا يزال هناك التحكم في الإشارة إلى الملحق وبالتالي فلن يفعل ذلك يتم الافراج

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