Definição dos sinalizadores consistent e done
Você define os sinalizadores consistent e done invocando métodos nas interfaces IObjectContext ou IContextState. As estratégias usadas por essas duas interfaces diferem significativamente. IObjectContext tem quatro métodos que associam os sinalizadores consistent e done em combinações exclusivas, enquanto IContextState tem dois métodos que permitem definir cada sinalizador de forma independente. Os métodos IObjectContext também são expostos por meio do objeto ObjectContext .
Para controle independente de cada sinalizador, IContextState fornece um método para definir o sinalizador consistente como Verdadeiro ou Falso e um método para definir o sinalizador concluído como Verdadeiro ou Falso. Esses métodos são SetMyTransactionVote e SetDeactivateOnReturn, respectivamente. A interface IContextState também inclui métodos para recuperar o valor atual de cada sinalizador.
Quando você define o valor do método SetMyTransactionVote como TxCommit, o COM+ verifica a presença de uma transação. Se o COM+ não detectar uma transação, ele gerará um erro que você pode capturar em um arquivo de log. Por exemplo, suponha que alguém configure inadvertidamente o atributo de transação do seu componente como Sem Suporte, mas você esperava que ele estivesse definido como Obrigatório. Ao definir SetMyTransactionVote = TxCommit, você pode identificar o conflito e agir.
A tabela a seguir descreve as chamadas de método que podem ser usadas para definir os sinalizadores consistent e done.
Sinalizador consistent | Sinalizador done | Método IObjectContext | Métodos IContextState |
---|---|---|---|
Verdadeiro |
Falso |
EnableCommit |
SetMyTransactionVote txVote = TxCommit SetDeactivateOnReturn bDeactivate = Falso |
Falso |
Falso |
DisableCommit |
SetMyTransactionVote txVote = TxAbort SetDeactivateOnReturn bDeactivate = Falso |
Falso |
True |
SetAbort |
SetMyTransactionVote txVote = TxAbort SetDeactivateOnReturn bDeactivate = Verdadeiro |
Verdadeiro |
Verdadeiro |
SetComplete |
SetMyTransactionVote txVote = TxCommit SetDeactivateOnReturn bDeactivate = Verdadeiro |
Observação
A propriedade auto-done, que é definida no nível do método, pode afetar como os sinalizadores consistent e done são definidos. Para obter mais informações sobre a propriedade auto-done, consulte Como habilitar auto-done para um método e Configuração do bit done.