ما هي عمليات الحظر في .NET التي ستتعامل مع رسائل COM عند حظرها؟

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

  •  29-09-2019
  •  | 
  •  

سؤال

عند إنشاء مؤشر ترابط STA جديد لاستضافة مكون STA COM ، تقع على عاتق هذا الموضوع مسؤولية ضخ رسائل Windows المتعلقة بـ COM. من ما تمكنت من جمعه ، ستقوم ببعض بدايات الخيوط .NET مثل Lock (Monitor.enter) بذلك من أجلك أثناء انتظار إصدار الكائن بواسطة مؤشر ترابط آخر. هناك طريقة أخرى لجعل .NET PUMP COM لك هي التي رأيتها هي استخدام. join ().

أين يمكنني العثور على قائمة كاملة من الأواني المدمجة في الخيوط مع هذا السلوك؟ هل ينتظرنا هذا الدعم؟ ماذا عن Waitany () ، أو المجموعات المتزامنة الجديدة في .NET 4؟ أنا غير قادر على العثور على هذا في الوثائق لأي من الطرق المحددة.

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

المحلول

يمكن أن يتم هندسة عكسية إلى حد ما من مصدر SSCLI20 ، وإن كان مؤرخًا. وظيفة CLR الأساسية التي تنفذ msgwaitformultiplehandles هي doappropriatewait. من ما أراه ، يتم استخدامه بواسطة Autoresetevent و ManualResetevent و Semaphore ولكن ليس بواسطة Mutex. واحد Quirk هو أن waithandle.waitany على ما يرام من موضوع STA ولكن waitall () يولد استثناء. نعم ، لم يتم توثيق هذا في أي مكان آخر ، ثم تلميحات قليلة في مدونة كريس بروم. لا يمكنك أن تفترض الكثير مما وجدته ، اختبر هذا للتأكد.

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