Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
COM uygulamalarının, COM veya işletim sisteminden yapılan bir veya daha fazla çağrı işlenirken kullanıcı girişiyle doğru şekilde başa çıkabilmesi gerekir. COM, yalnızca tek iş parçacıklı daireler için çağrı eşitlemesi sağlar. Çok iş parçacıklı daireler (serbest iş parçacıklı iş parçacıkları içeren) çağrı yaparken çağrı almaz (aynı iş parçacığında). Çok iş parçacıklı daireler, giriş eşitlenmiş çağrılar yapamaz. Zaman uyumsuz çağrılar, çok iş parçacıklı dairelerde zaman uyumlu çağrılara dönüştürülür. İleti filtresi, çok iş parçacıklı bir dairede herhangi bir iş parçacığı için çağrılmaz. İş parçacığı oluşturma sorunları hakkında daha fazla bilgi için bkz. İşlemler, İş Parçacıkları ve Daireler.
İşlemler arasındaki COM çağrıları aşağıdaki gibi üç kategoriye ayrılır:
-
zaman uyumlu çağrıları
-
COM içinde gerçekleşen iletişimin çoğu zaman uyumludur. Zaman uyumlu çağrılar yaparken, arayan devam etmeden önce yanıtı bekler ve beklerken gelen iletileri alabilir. COM, yanıtı beklemek, diğer iletileri denetimli bir şekilde almak ve göndermek için kalıcı bir döngü girer.
-
zaman uyumsuz bildirimleri
-
Zaman uyumsuz bildirimler gönderirken, arayan yanıt için beklemez. COM, platforma bağlı olarak zaman uyumsuz bildirimler göndermek için PostMessage veya üst düzey olayları kullanır. COM, IAdviseSinkbeş zaman uyumsuz yöntemi tanımlar:
- OnDataChange
- OnViewChange
- OnRename
- Kaydet
- OnClose
Not
COM zaman uyumsuz bir çağrıyı işlerken, zaman uyumlu çağrılar yapılamaz. Örneğin, kapsayıcı uygulamasının OnDataChange uygulaması IPersistStorage::Saveçağrısı içeremez. Bu çağrılar, COM tarafından desteklenen tek zaman uyumsuz çağrılardır. Şu anda zaman uyumsuz bir özel arabirim oluşturmanın hiçbir yolu yoktur.
-
Girişle eşitlenen çağrılar
-
Giriş eşitlenmiş çağrılar yapılırken, çağrılan nesnenin denetimi vermeden önce çağrıyı tamamlaması gerekir. Bu, odak yönetiminin düzgün çalıştığından ve kullanıcı tarafından girilen verilerin uygun şekilde işlendiğinden emin olunmasını sağlar. Bu çağrılar COM tarafından SendMessage işlevi aracılığıyla kalıcı bir döngü girilmeden yapılır. Giriş eşitlenmiş bir çağrı işlenirken, çağrılan nesnenin denetimi getirebilecek herhangi bir işlev veya yöntem (zaman uyumlu yöntemler dahil) çağırmaması gerekir. Aşağıdaki yöntemler giriş eşitlenir
- IOleWindow::GetWindow
- IOleInPlaceActiveObject::OnFrameWindowActivate
- IOleInPlaceActiveObject::OnDocWindowActivate
- IOleInPlaceActiveObject::ResizeBorder
- IOleInPlaceUIWindow::GetBorder
- IOleInPlaceUIWindow::RequestBorderSpace
- IOleInPlaceUIWindow::SetBorderSpace
- IOleInPlaceFrame::SetMenu
- IOleInPlaceFrame::SetStatusText
- IOleInPlaceObject::SetObjectRects
Zaman uyumsuz ileti işlemeden kaynaklanabilecek sorunları en aza indirmek için, COM yöntemi çağrılarının çoğu zaman uyumlu olur. Zaman uyumlu iletişimde, gelen iletileri göndermek ve işlemek için özel koda gerek yoktur. Bir uygulama zaman uyumlu bir yöntem çağrısı yaptığında, COM gerekli yanıtları işleyen ve bunları işleyebilen uygulamalara gelen iletileri gönderen kalıcı bir bekleme döngüsü girer.
COM, mantıksal iş parçacığı kimliği adlı bir tanımlayıcı atayarak yöntem çağrılarını yönetir. Kullanıcı bir menü komutu seçtiğinde veya uygulama yeni bir COM işlemi başlattığında yeni bir komut atanır. İlk COM çağrısıyla ilgili sonraki çağrılara ilk çağrıyla aynı mantıksal iş parçacığı kimliği atanır.