COM 和可 連線 物件中的事件
當程式偵測到發生的情況時,它可以通知其用戶端。 例如,如果股票刻度程序偵測到股票價格的變化,它可以通知所有客戶變更。 此通知程式稱為 引發事件。
使用 COM 時,伺服器物件可以使用 COM 事件來引發事件,而不需要任何有關哪些物件將會收到通知的資訊。 物件也可以使用 可連接的對象 來維護已要求通知之用戶端的詳細資訊。
除了連入介面之外,COM 可連接物件還提供連出介面給用戶端。 因此,物件及其用戶端可以進行雙向通訊。 傳入介面會在 對象上實作,並接收物件外部用戶端的呼叫,而傳出介面則是在用戶端接收上實作,並接收來自 物件的呼叫。 物件會定義想要使用的介面,而用戶端會實作介面。
物件會定義其傳入介面,並提供這些介面的實作。 傳入介面可透過物件的 IUnknown::QueryInterface 方法提供給用戶端。 用戶端會在物件上呼叫傳入介面的方法,而物件代表用戶端執行所需的動作。
傳出介面也會由 物件定義,但用戶端會在用戶端所建立的接收物件上提供傳出介面的實作。 然後,物件會呼叫接收對象上傳出介面的方法,以通知客戶端物件中的變更、觸發用戶端中的事件、向用戶端要求某些專案,或事實上,針對物件建立者所想出的任何用途。
傳出介面的範例是按下按鈕控件所定義的IButtonSink 介面,以通知其用戶端其事件。 例如,當使用者按兩下畫面上的按鈕時,按鈕物件會在用戶端的接收物件上呼叫IButtonSink::OnClick。 按鈕控制項會定義傳出介面。 若要讓按鈕的用戶端處理事件,客戶端必須在接收對象上實作該傳出介面,然後將該接收連接到按鈕控件。 然後,當按鈕發生事件時,按鈕會呼叫接收,此時用戶端可以執行它想要指派給該按鈕的任何動作。
可 連線 物件提供物件對客戶端通訊的一般機制。 任何想要公開事件或任何類型的通知的物件都可以使用這項技術。 除了一般可連接的對象技術之外,COM 還提供許多特殊用途接收和月臺介面,供物件用來通知用戶端對用戶端感興趣的特定事件。 例如, 物件可以使用 IAdviseSink 來通知客戶端數據,並檢視物件中的變更。
如需詳細資訊,請參閱下列主題: