Condividi tramite


Scomparti

Tipi di raggruppamento

Esistono diversi tipi di raggruppamenti. È presente un raggruppamento globale e ogni thread manager, gestione documenti e contesto può contenere un raggruppamento.

Il raggruppamento globale consente ai client di condividere i dati tra processi. Per ottenere il gestore del raggruppamento globale, chiamare ITfThreadMgr::GetGlobalCompartment.

Il gestore thread contiene un gestore raggruppamento che contiene raggruppamenti per thread. In questo modo i dati possono essere condivisi all'interno di un thread. Per ottenere un gestore raggruppamento thread manager, chiamare ITfThreadMgr::QueryInterface con IID_ITfCompartmentMgr.

Ogni gestore documenti creato contiene anche un gestore raggruppamento. In questo modo i dati possono essere condivisi all'interno di un gestore di documenti specifico. Per ottenere il gestore raggruppamento gestione documenti, chiamare ITfDocumentMgr::QueryInterface con IID_ITfCompartmentMgr.

Ogni contesto creato contiene anche un gestore raggruppamento. In questo modo i dati possono essere condivisi all'interno di un contesto specifico. Per ottenere un gestore raggruppamento di contesto, chiamare ITfContext::QueryInterface con IID_ITfCompartmentMgr.

Creazione ed eliminazione di un raggruppamento

Viene creato un raggruppamento la prima volta ITfCompartmentMgr::GetCompartment viene chiamato con il GUID del raggruppamento. Il client di installazione deve impostare il valore iniziale del raggruppamento usando ITfCompartment::SetValue. Fino a quando non viene impostato un valore, il valore del raggruppamento è vuoto. Per questo motivo, non è possibile verificare che il raggruppamento esista prima di è stato chiamato getCompartment. Per evitare questa situazione, il client di installazione deve impostare il valore su un valore iniziale in modo che altri client possano determinare se il raggruppamento esiste già.

Il metodo ITfCompartmentMgr::ClearCompartment viene usato per rimuovere un raggruppamento. Tutti i riferimenti esistenti al raggruppamento sono contrassegnati come non validi.

Recupero di compartimenti

Usando l'interfaccia diITfCompartmentMgr, un client può enumerare i raggruppamenti chiamando ITfCompartmentMgr::EnumCompartments. Questo metodo fornisce un oggetto IEnumGUID che contiene i GUID di tutti i raggruppamenti installati.

Usando il GUID del raggruppamento , ITfCompartmentMgr::GetCompartment viene usato per ottenere un raggruppamento specifico. Questo metodo fornisce al chiamante un oggetto ITfCompartment in grado di ottenere e impostare i dati del raggruppamento.

Ricezione di notifiche di modifica raggruppamento

Quando il valore di un raggruppamento cambia, il gestore TSF notifica a eventuali sink installati che il raggruppamento è cambiato. Per installare un sink di modifica raggruppamento, creare un oggetto che implementi ITfCompartmentEventSink. Chiamare quindi ITfCompartment::QueryInterface con IID_ITfSource sull'oggetto raggruppamento da monitorare per ottenere un'interfaccia ITfSource. Chiamare ora ITfSource::AdviseSink con IID_ITfCompartmentEventSink e il puntatore all'oggetto ITfCompartmentEventSink. Quando il valore del raggruppamento cambia, viene chiamato il del sink ITfCompartmentEventSink::OnChange con il GUID del raggruppamento. Il sink consigliato può chiamare ITfCompartment::GetValue per ottenere il nuovo valore.

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange