Поделиться через


Настройка согласованных и выполненных флагов

Вы устанавливаете согласованные и выполненные флаги, вызывая методы в интерфейсах IObjectContext или IContextState. Стратегии, используемые этими двумя интерфейсами, значительно отличаются. IObjectContext имеет четыре метода, которые связывают согласованные и выполненные флаги вместе в уникальных сочетаниях, в то время как IContextState имеет два метода, которые позволяют задать каждый флаг независимо. Методы IObjectContext также предоставляются через объект ObjectContext.

Для независимого управления каждым флагом IContextState предоставляет метод для установки флага согласованности в True или False и метод для установки флага завершения в True или False. Эти методы - SetMyTransactionVote и SetDeactivateOnReturn, соответственно. Интерфейс IContextState также включает методы для получения текущего значения каждого флага.

При установке метода SetMyTransactionVote в значение TxCommit, COM+ проверяет наличие транзакции. Если COM+ не обнаруживает транзакцию, она создает ошибку, которую можно записать в файле журнала. Например, предположим, что кто-то непреднамеренно настраивает атрибут транзакции компонента в значение Not Supported, но ожидается, что он должен быть задан как "Обязательный". Задав SetMyTransactionVote = TxCommit , можно определить конфликт и принять меры.

В следующей таблице описаны вызовы метода, которые можно использовать для установки флагов согласованности и завершения.

Согласованный флаг Флаг готовности Метод IObjectContext Методы IContextState
Истина
Неверно
EnableCommit
SetMyTransactionVotetxVote = TxCommit
SetDeactivateOnReturnbDeactivate = Ложь
Неверно
Ложь
DisableCommit
SetMyTransactionVotetxVote = TxAbort
SetDeactivateOnReturn bDeactivate = False
Ложь
Истина
SetAbort
SetMyTransactionVotetxVote = TxAbort
SetDeactivateOnReturnbDeactivate = True
Истина
Истина
SetComplete
SetMyTransactionVotetxVote = TxCommit
Step 2: SetDeactivateOnReturnbDeactivate = True

Примечание.

Свойство auto-done, заданное на уровне метода, может повлиять на то, как заданы консистентные и выполненные флаги. Дополнительные сведения о свойстве auto-done см. в разделе "Включение автоматического выполнения" для метода и настройка готового бита.