Metodo IObjectContext::D isableCommit (comsvcs.h)

Dichiara che gli aggiornamenti transazionali dell'oggetto si trovano in uno stato incoerente e non possono essere sottoposti a commit nello stato presente.

Sintassi

HRESULT DisableCommit();

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente. Gli aggiornamenti transazionali dell'oggetto non possono essere sottoposti a commit finché l'oggetto chiama EnableCommit o SetComplete.
E_UNEXPECTED
Si è verificato un errore imprevisto. Ciò può verificarsi se un oggetto passa il puntatore IObjectContext a un altro oggetto e l'altro oggetto chiama DisableCommit usando questo puntatore. Un puntatore IObjectContext non è valido all'esterno del contesto dell'oggetto originariamente ottenuto.
CONTEXT_E_NOCONTEXT
L'oggetto corrente non ha un contesto associato. Questo è probabilmente perché non è stato creato con uno dei metodi COM+ CreateInstance.

Commenti

È possibile usare il metodo DisableCommit per impedire il commit prematuro di una transazione tra chiamate di metodo in un oggetto con stato. Quando un oggetto richiama DisableCommit, indica che il suo lavoro è incoerente e che non può completare il suo lavoro finché non riceve ulteriori chiamate al metodo dal client. Indica inoltre che deve mantenere lo stato per eseguire tale lavoro. Ciò impedisce a COM+ di disattivare l'oggetto e recuperare le relative risorse in caso di ritorno da una chiamata al metodo. Quando un oggetto ha chiamato DisableCommit, se un client tenta di eseguire il commit della transazione prima che l'oggetto abbia chiamato EnableCommit o SetComplete, la transazione viene interrotta.

Si supponga, ad esempio, di avere un componente GeneralLedger che aggiorna un database. Un client effettua più chiamate a un oggetto GeneralLedger per pubblicare voci a vari account. Esiste un vincolo di integrità che indica che i addebiti devono essere uguali ai crediti quando la chiamata finale al metodo finale restituisce o la transazione deve interrompere. L'oggetto GeneralLedger ha un metodo di inizializzazione in cui il client lo informa della sequenza di chiamate che il client eseguirà e l'oggetto GeneralLedger chiama DisableCommit. L'oggetto mantiene lo stato tra le chiamate in modo che, dopo aver eseguito la chiamata finale nella sequenza, l'oggetto può assicurarsi che il vincolo di integrità venga soddisfatto prima di consentire il commit del lavoro.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione comsvcs.h

Vedi anche

IObjectContext