إدارة و مدارة مؤشر الترابط التشعبي
COM مكونات استخدم apartments إلى يزامن الوصول إلى موارد. في تباين, مدارة الكائنات استخدم synchronized regions, المزامنة primitives such كـ mutexes, locks و completion ports, و synchronized contexts إلى ensure that الجميع shared موارد are used في a مؤشر ترابط-آمن manner. For إضافى معلومات حول the .NET نموذج مؤشر الترابط, see إدارة مؤشر الترابط التشعبي.
لإمكانية التشغيل المتداخل، وقت تشغيل اللغة العامة إنشاء وتهيئة الأجزاء عند استدعاء كائن COM. A مدارة مؤشر ترابط can إنشاء و Enter الزر a مفرد-threaded apartment (STA) that يحتوي على فقط واحد مؤشر ترابط, أو a multi-threaded apartment (MTA) that يحتوي على واحد أو المزيد عمليات جزئية. عندما تكون شقة COM وحيز تخزين مسار التنفيذ الذي تم إنشاؤه متوافق، يسمح COM مؤشر ترابط استدعاء لإجراء اتصالات مباشرة كائن COM. If the apartments are incompatible, COM creates a متوافق apartment و marshals الجميع calls through a proxy في the جديد apartment.
The وقت التشغيل calls CoInitializeEx إلى يهيّئ the COM apartment كـ either an MTA أو an STA apartment. في the .NET الإصدار إطار العمل 2.0, مدارة عمليات جزئية are initialized كـ MTA if their apartment الولاية has not been التعيين prior إلى البدء the مؤشر ترابط. استخدم the SetApartmentState أو TrySetApartmentState أسلوب إلى التعيين the apartment الولاية قبل البدء the مؤشر ترابط.
في the .NET الإصدار إطار العمل 2.0, the main تطبيق مؤشر ترابط هو initialized كـ MTA unless the STAThreadAttribute هو applied إلى the إدخال يؤشر إجراء.
ملاحظة |
---|
في the .NET Framework versions 1.0 و 1.1, it was possible إلى التعيين the apartment الولاية بعد the مؤشر ترابط was تشغيل بواسطة using the System.Threading.ApartmentState خاصية; this تاريخ الإنشاء a الولاية تعارض. في.NET Framework الالإصدار 2.0، th هو هو غير مسموح بها. |
Some programming نماذج require that you التعيين the STA خاصية تشغيل a مؤشر ترابط. For مثال, for Windows Forms إلى يهيّئ عناصر such كـ يسحب و إسقاط, you must إنشاء و Enter الزر a مفرد-threaded apartment.
ملاحظة |
---|
إذا تم مسجَّل الوكيل وكعب روتين ولا مكتبة النوع، يمكن أن يحدث من InvalidCastException عند استدعاء كائن COM من تعليمات برمجية تمت إدارتها. |
The following جدول lists the ApartmentState قائمة تعداد قيم و shows the comparable COM apartment تهيئة يتصل.
ApartmentState قائمة تعداد القيمة |
COM apartment تهيئة |
---|---|
MTA |
CoInitializeEx(NULL, COINIT_MULTITHREADED) |
sta |
CoIntializeEx(NULL, COINIT_APARTMENTTHREADED) |
غير معروف |
CoInitializeEx(NULL, COINIT_MULTITHREADED) |
Whenever the COM كائن و the مدارة مؤشر ترابط are في incompatible apartments, الجميع calls تشغيل the كائن are made through a COM-تاريخ الإنشاء proxy.
راجع أيضًا:
المبادئ
يتعرض لمكونات COM إلى.NET Framework
يتعرض لبرنامج.NET Framework مكونات إلى COM