الحدث لا يطلق النار من خلال AppDomain
-
01-10-2019 - |
سؤال
أواجه الكثير من المتاعب مع AppDomains. لدي حاليًا Appdomain يحتوي على عناصر تحكم في الكاميرا ، وأحاول أن أعود من الأحداث التي أثيرت من هذا AppDomain الثانوي (مثل الصورة التي يتم التقاطها) إلى البرنامج الرئيسي. يبدو أن كل شيء يتم إعداده بشكل صحيح (يتم تسجيل الأحداث ، وسيتم تشغيل الوظائف عبر المجال) ولكن عندما أحاول الاستدعاء ، لا يحدث شيء. كل ما يمكنني العثور عليه حول هذا الموضوع ينطوي على استثناءات يتم إثارتها بدلاً من مجرد لا شيء يحدث على الإطلاق.
لا أعرف إلى أي مدى يمكنني شرح ذلك أفضل من هذا ، لذلك صنعت مخططًا (مبسطًا للغاية) ، ويمكنني نشر أي رمز ضروري.
http://a.imageshack.us/img832/8205/cameradiagram.png
نقطة توقف في OnPictureUpdated.Invoke(pic);
جزء ، داخل AppDomain الثانوي ، ولكن لا شيء (إما في الداخل CameraContainer
أو في التطبيق الرئيسي. أقوم بفحص فارغ عند استدعاء الأحداث ، لم أضع ذلك في الرسم البياني.
المحلول
+1 للجهد في السؤال.
أعتقد أن هذا قد يكون فقط لأنك CameraContainer
ليس أ MarshalByRefObject
. لأنه يعلق على الحدث ، AppDomain
تحتوي على CameraManager
يحتاج بشكل فعال إلى العودة إلى الابتدائية AppDomain
عندما يتم رفع الحدث.