共用方式為


車廂

區間類型

有幾種不同類型的區間。 有一個全域區間,每個線程管理員、檔管理員和內容都可以包含區間。

全域區間可讓用戶端跨進程共享數據。 若要取得全域區間管理員,請呼叫 ITfThreadMgr::GetGlobalCompartment

線程管理員包含區間管理員,其中包含每個線程的區間。 這可讓數據在線程內共用。 若要取得線程管理員區間管理員,請使用 IID_ITfCompartmentMgr 呼叫 ITfThreadMgr::QueryInterface

每個建立的檔管理員也都包含區間管理員。 這可讓數據在特定檔管理員內共用。 若要取得檔管理員區間管理員,請使用 IID_ITfCompartmentMgr 呼叫 ITfDocumentMgr::QueryInterface

每個建立的內容也都包含區間管理員。 這可讓數據在特定內容中共用。 若要取得內容區間管理員,請使用 IID_ITfCompartmentMgr 呼叫 ITfContext::QueryInterface

建立和刪除區間

第一次 ITfCompartmentMgr::GetCompartment 會使用區間 GUID 呼叫區間。 安裝客戶端應該使用 ITfCompartment::SetValue來設定區間的初始值。 在設定值之前,區間值是空的。 因此,在呼叫 getCompartment 之前,沒有任何方法可以驗證區間是否存在。 為了避免這種情況,安裝客戶端應該將值設定為一些初始值,讓其他用戶端可以判斷區間是否已經存在。

ITfCompartmentMgr::ClearCompartment 方法可用來移除區間。 區間的任何現有參考都會標示為無效。

取得區間

使用 ITfCompartmentMgr 介面,用戶端可以呼叫 ITfCompartmentMgr::EnumCompartments來列舉區間。 此方法提供 IEnumGUID 物件,其中包含所有已安裝區間的 GUID。

使用區間 GUID ,ITfCompartmentMgr::GetCompartment 用來取得特定區間。 這個方法會提供呼叫端 ITfCompartment 物件,以取得和設定區間數據。

接收區間變更通知

當區間的值變更時,TSF 管理員會通知任何已安裝的建議接收,指出區間已變更。 若要安裝區間變更建議接收,請建立實作 ITfCompartmentEventSink的物件。 然後呼叫 ITfCompartment::QueryInterface,並在要監視的區間物件上使用IID_ITfSource來取得 ITfSource 介面。 現在,使用 IID_ITfCompartmentEventSink 和 ITfCompartmentEventSink 物件的指標,呼叫 ITfSource::AdviseSink。 當區間的值變更時,建議接收的 ITfCompartmentEventSink::OnChange 會使用區間的 GUID 呼叫。 建議接收可以呼叫 ITfCompartment::GetValue,以取得新的值。

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange