COM:داعيا من الصفحات الأخرى يسبب حوادث, كيفية جعلها تعمل في نفس الموضوع ؟

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

  •  11-07-2019
  •  | 
  •  

سؤال

وأنا أفعل BHO (ملحق IE) الذي يتلقى الأحداث على الصفحات الأخرى.عندما كنت الوصول إلى دوم من الصفحات الأخرى ، أي حوادث.هل من الممكن لجعل دوم الوصول إليها من نفس مؤشر الترابط الرئيسي BHO الخيط بحيث لا تعطل ؟

يبدو أن عام COM خاصية تعدد المشكلة التي أنا لا أفهم كثيرا.

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

المحلول

والنظر في استخدام CoMarshalInterface أو <وأ href = "HTTP : //msdn.microsoft.com/en-us/library/ms693316.aspx "يختلط =" نوفولو noreferrer "> CoMarshalInterThreadInterfaceInStream

وهذه سوف تعطيك واجهة ملفوفة إلى كائن COM STA هذا هو الخيط آمنة.

نصائح أخرى

وأنا لا أعرف الكثير عن ملحقات IE، ولكن هذا يبدو وكأنه بعض وجوه COM يحتاج إلى أن تكون علامة على شقة واحدة مترابطة، بحيث يضمن النظام وقت التشغيل COM الذي يتم تشغيله على نفس الخيط الذي يطلق عليه في البداية. إذا كنت لا تستطيع تغيير شيء آخر، هل يمكن على الأرجح طريق المكالمات إلى DOM خلال كائن COM منفصلة ضعت STA لتحقيق التأثير نفسه. ويساعد هذا الأمل ... أنا أعرف قليلا عن خاصية تعدد COM، ولكن ليس كثيرا حول ملحقات IE.

وآه، متعة متعة متعة خاصية تعدد مع COM.

<وأ href = "https://stackoverflow.com/questions/199972/com-calling-from-other-thread-causes-crashes-how-to-make-it-run-on-the-same- عبتي # 200012 "> الجواب جيرالد يبدو الحق إذا كنت تريد نقل مؤشر واجهة من موضوع لآخر مرة واحدة بالضبط. لقد وجدت أن GIT (جدول الواجهة العمومية) هو مساعدة كبيرة لهذا النوع من الشيء إذا كنت في نظام مؤشرات ... أساسا كنت لا تبقي حول مؤشرات واجهة لكن الكوكيز DWORD بدلا المستخدمة من قبل GIT ل الحصول على مؤشر واجهة تنظيم بشكل مناسب لأي موضوع تقوم باستخدامه. (لديك لتسجيل الكائن في السؤال مع GIT أولا، وإلغاء في وقت لاحق عندما يتم الانتهاء من ذلك أو يتم الانتهاء من وجوه الخاص بك)

كن حذرا على الرغم من.الأداء يمكن أن تصبح مشكلة خطيرة.

إذا كنت مجرد اللعب حولها لمعرفة المزيد عن BHOs, يمكنك استخدام STA لجعل الخاص بك ::SetSite() تنفيذ كائن تعمل كما لو كانت ترابط واحد (هذا يسمح لك للسماح المواضيع الأخرى سحب BHO هو مؤشر من GlobalInterfaceTable كما @JasonS يذكر.

إذا كنت تفعل شيئا من المتوقع أن تكون جزء من المنتج أنا أوصي لكم بعناية فائقة تعيد النظر في الذهاب MTA في كل مكان يمكنك التعامل مع التزامن والخيط قضايا سلامة نفسك.في هذه الحالة سوف تحتاج فقط للتأكد من أن المواضيع المشتركة بين التشغيل مع BHO كائن COM, كانوا أنفسهم ، تهيئة COM.

على سبيل المثال ، إذا كنت ترغب في مراقبة البيانات الواردة/الصادرة من موقع يبحث عن الأشياء (إما خطيرة أو حساسة) - إذا كنت لا تريد أن قوة كل من هذه المواضيع في حلق STA الكائن باستخدام ياهو كمثال على أكثر من 30 طلبا إطلاق الخاص بك BHO سوف تبدأ حبس أي.

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