CComObjectRootEx

temp&latelt; sınıfThreadModel gt;
CComObjectRootEx sınıfı: &Genel CComObjectRootBase

Parametreleri

ThreadModel

İstenen iş parçacığı modeli olan yöntemleri uygulayan sınıf. ThreadModel CComSingleThreadModel, CComMultiThreadModelveya CComMultiThreadModelNoCSolarak ayarlayarak açıkça iş parçacığı modelini seçebilirsiniz. ThreadModel CComObjectThreadModel veya CComGlobalsThreadModel olarak ayarlayarak sunucunun varsayılan iş parçacığı modelini kabul edebilir.

CComObjectRootEx , hem nonaggregated hem de toplanmış nesneleri için nesne başvuru sayısı yönetimi ele alır. Nesne değil toplanan ve eğer nesneniz toplanan işaretçinin dış bilinmeyen tutan nesne başvurusu sayısı tutar. İç nesne oluşturmak ve dış nesne iç arabirimleri yayımlanan veya iç nesne silinirse silinmeye karşı korumak için başarısız ele CComObjectRootEx yöntemleri toplanmış nesneleri için kullanılabilir.

Com sunucusu uygulayan bir sınıfın CComObjectRootEx ya da CComObjectRoot devralınmalıdır.

Sınıf tanımı declare_poly_aggregatable makroyu belirtiyorsa, atl CComPolyObjectlt örneğini oluşturur;CYourClass > ne zaman IClassFactory::CreateInstance denir. Oluşturma sırasında dış bilinmeyen değeri denetlenir. nullise onu IUnknown nonaggregated bir nesneyi uygulanır. Dış bilinmeyen nulldeğilse, IUnknown toplanmış bir nesne için uygulanır.

Sınıf declare_poly_aggregatable makro belirtmezse, atl CComObjectlt örneğini oluşturur;CYourClass > toplanmış nesneleri veya nonaggregated nesneleri için CComAggObject <CYourClass> örneği.

CComPolyObject kullanmanın avantajı, hem CComAggObject hem de CComObject modülü içinde toplanmış ve nonaggregated durumlar ele sahip önlemek olduğunu. Tek bir CComPolyObject nesne, her iki durumda işler. Bu nedenle, vtable tek bir kopyası ve işlevleri tek bir kopyasını, senin modülü mevcut. Senin vtable büyükse, bu modül boyutu önemli ölçüde azaltabilirsiniz. Senin vtable küçük, toplanan ya da nonaggregated bir nesne için getirilmemiştir çünkü CComAggObject ve CComObject gibi Ancak, CComPolyObject kullanarak biraz daha büyük bir modül boyutu neden olabilir.

Tam denetim veya Internet Explorer'ın denetimi oluşturduğunuzda declare_poly_aggregatable makroyu otomatik olarak, sınıf tanımının atl nesne sihirbaz tarafından eklenir.

Nesnenizin toplanır, IUnknown CComAggObject veya CComPolyObjecttarafından gerçekleştirilir. Bu sınıflar, CComObjectRootEx' ın OuterQueryInterface, OuterAddRefve OuterRelease dış bilinmeyen iletmek için QueryInterface, AddRefve yayın aramaları temsilci. Genellikle, CComObjectRootEx::FinalConstruct toplanmış nesneleri oluşturmak için sınıfta geçersiz ve toplanmış nesneleri serbest CComObjectRootEx::FinalRelease geçersiz kılma.

Nesnenizin toplanan değil, IUnknown CComObject veya CComPolyObjecttarafından uygulanır. Bu durumda, aramalar için QueryInterface, AddRefve serbest CComObjectRootEx' ın InternalQueryInterface, InternalAddRefve InternalRelease için gerçek işlemleri gerçekleştirmek için temsilci.

# include lt;atlcom.h>

Sınıf üyeleri

Ayrıca bkz: CComAggObject, CComObject, CComPolyObject

Index