Настройка согласованных и выполненных флагов
Вы устанавливаете согласованные и выполненные флаги, вызывая методы в интерфейсах IObjectContext или IContextState. Стратегии, используемые этими двумя интерфейсами, значительно отличаются. IObjectContext имеет четыре метода, которые связывают согласованные и выполненные флаги вместе в уникальных сочетаниях, в то время как IContextState имеет два метода, которые позволяют задать каждый флаг независимо. Методы IObjectContext также предоставляются через объект ObjectContext.
Для независимого управления каждым флагом IContextState предоставляет метод для задания согласованного флага значение True или False, а метод для задания готового флага значение True или False. Эти методы: SetMyTransactionVote и SetDeactivateOnReturn соответственно. Интерфейс IContextState также включает методы для получения текущего значения каждого флага.
При установке значения метода SetMyTransactionVote значение TxCommit COM+ проверяет наличие транзакции. Если COM+ не обнаруживает транзакцию, она создает ошибку, которую можно записать в файле журнала. Например, предположим, что кто-то непреднамеренно настраивает атрибут транзакции компонента в значение Not Supported, но ожидается, что он должен быть задан как "Обязательный". Задав SetMyTransactionVote = TxCommit , можно определить конфликт и принять меры.
В следующей таблице описаны вызовы метода, которые можно использовать для задания согласованных и выполненных флагов.
Согласованный флаг | Флаг "Готово" | Метод IObjectContext | Методы IContextState |
---|---|---|---|
Истина |
False |
EnableCommit |
SetMyTransactionVote txVote = TxCommit SetDeactivateOnReturn bDeactivate = False |
False |
False |
DisableCommit |
SetMyTransactionVote txVote = TxAbort SetDeactivateOnReturn bDeactivate = False |
False |
Истина |
SetAbort |
SetMyTransactionVote txVote = TxAbort SetDeactivateOnReturn bDeactivate = True |
Истина |
Истина |
SetComplete |
SetMyTransactionVote txVote = TxCommit SetDeactivateOnReturn bDeactivate = True |
Примечание.
Свойство auto-done, заданное на уровне метода, может повлиять на то, как заданы согласованные и выполненные флаги. Дополнительные сведения о свойстве auto-done см. в разделе "Включение автоматического выполнения" для метода и настройка готового бита.