Aracılığıyla paylaş


Sistem tarafından sağlanan vekili kullanma

DLL sunucunuz için sistem tarafından sağlanan vekili kullanmak amacıyla, kayıt defterindeki DllSurrogate değeri için boş bir dize veya NULL belirterek DLL dosyasını kaydedin. COM'a atanmış bir DLL sunucusu için etkinleştirme isteği geldiğinde, COM ayrı bir çağrıyı önlemek için varsayılan vekil işlemi ve istenen DLL'yi (başlatma komut satırında CLSID'yi dahili olarak belirterek) başlatır. (Vekil işlemde birden fazla DLL sunucusu çalıştırma hakkında bilgi için bkz. Vekil Paylaşım.)

Vekil işlemin varsayılan uygulaması, karma iş parçacıklı model tarzında bir sözde COM sunucusudur. Birden çok DLL sunucusu tek bir vekil sürece yüklendiğinde, bu süreç, her DLL sunucusunun o sunucu için kayıt defterinde belirtilen iş parçacığı modeli kullanılarak örneklendirilmesini sağlar. Yüklenmiş tüm free-threaded sunucular, çok iş parçacıklı apartman modelinde birlikte çalışırken, her bir apartment-threaded sunucu, tek iş parçacıklı bir apartman modelinde yer alır. DLL sunucusu her iki iş parçacığı modeli de destekliyorsa, COM çoklu iş parçacığı oluşturmayı seçer.

Bu vekil işlem, COM'un hem DLL sunucularının belleğinden çıkarılmasını hem de vekil işlemin sonlandırılmasını işlemesi için yazılmıştır. İşlem ömrü, esas olarak işlemin üzerindeki dış bağımlılıkların göstergesi olarak görev yapan vekildeki eşleştirilmiş nesnelerin sayısıyla belirlenir. Her ne kadar amaç dış bağımlılıkları temsil etmek olsa da, bu yaşam süresi modeli süreç içi ve süreç dışı eşleştirmeyi ayırt edemez. Vekili istemeden apartmanlar arası sıralama yoluyla veya Genel Arabirim Tablosu veya IAgileReferencegibi proc içi sıralama tabanlı mekanizmalar aracılığıyla sabitlemekten kaçınmaya dikkat edin.

Sistem tarafından sağlanan vekil, çoğu geliştirici için çok iyi çalışacak ve kullanımı çok kolay olacak. Ancak, dikkat edilmesi gereken özel noktalara sahip olan geliştiriciler özel bir vekilin gerekli olduğuna karar verebilir. Daha fazla bilgi için bkz. Özel Vekil Yazma.