ماذا يحدث للتحكم النشط (colecontrol) بعد الدعوة إلى ondestroy ()؟

StackOverflow https://stackoverflow.com/questions/2544868

سؤال

لديّ عنصر تحكم ActiveX مكتوب في C ++ يعمل في Internet Explorer 8. معظم الوقت (حوالي 90 ٪) عندما يتم إغلاق علامة التبويب أو المتصفح الذي يحتوي على عنصر التحكم ، هناك انتهاك للوصول مثل هذا:

The thread 'Win32 Thread' (0x1bf0) has exited with code 0 (0x0).
Unhandled exception at 0x77b3b9fd in iexplore.exe: 0xC0000005: Access violation reading location 0x65007408.

يحدث انتهاك الوصول بعد الدعوة إلى ondestroy () ولكن قبل الاتصال إلى تدمير السيطرة.

ناتج التصحيح يقول:

No symbols are loaded for any call stack frame. The source code cannot be displayed.

لم يكن أي من الكود الخاص بي موجودًا في Stacktrace ، على الرغم من أنه ربما تالفة الكومة في وقت سابق أثناء التنفيذ.

ما هي أحداث دورة الحياة التي يتلقاها عنصر تحكم ActiveX بين المكالمة إلى OnDestroy () ومدمرة التحكم؟

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

المحلول

كما أفهم ، لا توجد دورة حياة للحدث بشكل صارم لـ ActiveX ، فهذا يعتمد على جانب المضيف. إذا تم استخدام سيطرتك مع بعض إطار عمل Ajax ، على سبيل المثال ، يمكن استدعاء OnDestroy () OnCreate () دون استدعاء Destructor. لذا ، تأكد من عدم وجود إجراءات غير ضرورية داخل معالج OnDestroy ().

يمكنك تحميل التحكم في حاوية اختبار التحكم ActiveX والعب مع تنشيط/إلغاء تنشيط ، ربما سيكون مفيدًا.

تمكين التحقق من التطبيق من أدوات تصحيح الأخطاء لنظام التشغيل Windows وتأكد من تصحيح الأخطاء الخاصة بك تنزيل رموز تصحيح OS. في هذه الحالة ، سيكون تتبع المكدس أكثر إفادة.

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