可連線點物件及示例 一

2021-06-05 02:58:13 字數 1071 閱讀 2039

參考書本:

《evc高階程式設計及其應用開發》

客戶是主動的,而元件是被動的,元件通過自身暴露給客戶的介面來監聽客戶請求,一旦接收到客戶請求便宜做出反應,

這樣的介面稱為「入介面」(incoming inte***ce).

與入介面相對應,物件也可以提供"出介面",物件通過這些出介面與客戶進行通訊。出介面包含一組成員函式,每個函式代表乙個通知。

如果乙個com物件支援乙個或多個介面,那麼我們稱這樣的物件為可連線物件(connectable object).

出介面與入介面的區別:

入介面是由com物件本身來實現的,而出介面是由客戶程式來祥瑞的,客戶程式實現這些介面,並把介面指指告訴物件,以後物件便利用此介面與客戶程式通訊。

在客戶程式方,實現這些介面的物件稱為"接收器"(sink).

以下是它們的關係:

1、可連線物件的基本結構

可連線物件可以通過乙個或多個出介面與客戶端通訊。com中約定可連線物件必須實現乙個iconnectionpoointcaotiner介面,用於管理所有的出介面。

每個出介面對應乙個連線點物件,而連線點物件實現了iconnectionpoint介面,客戶可通過iconnectionpoint介面與連線物件建立連線。

2、客戶程式與可連線物件的關係。

聯結器也是乙個com物件,它位於客戶程式內部,並不需要通過com庫來建立,因此接收器不需要clsid標識。

客戶與可連線物件建立連線的過程如下:

(1)呼叫punk->queryinte***ce3(iid_iconnectionpointcontainer,&pconnectionpointcontainer),得到連線點容器介面

(2)呼叫pconnectionpointcontainer->findconnectionpoint(iid_isomeeventset, pconnectionpoint)查詢指定的連線點物件

(3)呼叫pconnectionpoint->advise(psomoeeventset, &dwcookie)建立與接收器的連線

(4)當客戶端要取消連線時,需要先呼叫pconnectionpoint->unadvise(dwcookie)

判斷乙個單鏈表是否有環及環的連線點

給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的入口點在 4 帶環鍊錶的長度是多少?解法 1 對於問題1 判斷是否存在環 使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 如不存在環,fast遇到...

連線MYSQL資料庫的方法及示例

以下為訪問mysql資料庫例項 編譯指令 csc r corelab.mysql.dll r mysql.data.dll test.cs using system using system.using system.text using corelab.mysql using system.dat...

物件池及資料庫連線物件池

objectpool類 物件池 using system using system.collections.generic using system.text using system.timers using system.collections namespace objectpool 建立乙個...