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


Метод IObjectContext::D isableCommit (comsvcs.h)

Объявляет, что транзакционные обновления объекта находятся в несогласованном состоянии и не могут быть зафиксированы в их нынешнем состоянии.

Синтаксис

HRESULT DisableCommit();

Возвращаемое значение

Этот метод может возвращать следующие значения.

Код возврата Описание
S_OK
Метод завершился успешно. Транзакционные обновления объекта не могут быть зафиксированы, пока объект не вызовет EnableCommit или SetComplete.
E_UNEXPECTED
Произошла непредвиденная ошибка. Это может произойти, если один объект передает указатель IObjectContext другому объекту, а другой объект вызывает DisableCommit с помощью этого указателя. Указатель IObjectContext недопустим вне контекста объекта, который его первоначально получил.
CONTEXT_E_NOCONTEXT
Текущий объект не имеет контекста, связанного с ним. Вероятно, это связано с тем, что он не был создан с помощью одного из методов COM+ CreateInstance.

Комментарии

Метод DisableCommit можно использовать для предотвращения преждевременной фиксации транзакции между вызовами методов в объекте с отслеживанием состояния. Когда объект вызывает DisableCommit, он указывает, что его работа является несогласованной и что он не может завершить свою работу, пока не получит дальнейшие вызовы метода от клиента. Он также указывает, что для выполнения этой работы необходимо сохранить свое состояние. Это не позволит COM+ деактивировать объект и освободить его ресурсы при возвращении из вызова метода. Если объект вызывает DisableCommit, если клиент пытается зафиксировать транзакцию до вызова объекта EnableCommit или SetComplete, транзакция прерывается.

Например, предположим, что у вас есть компонент GeneralLedger, который обновляет базу данных. Клиент выполняет несколько вызовов объекта GeneralLedger для публикации записей в различные учетные записи. Существует ограничение целостности, которое говорит, что дебеты должны быть равны кредиты при возврате окончательного вызова метода или транзакция должна прерваться. Объект GeneralLedger имеет метод инициализации, в котором клиент сообщает ему о последовательности вызовов, которые будет выполнять клиент, а объект GeneralLedger вызывает DisableCommit. Объект сохраняет свое состояние между вызовами, чтобы после выполнения последнего вызова в последовательности объект смог убедиться, что ограничение целостности выполнено, прежде чем разрешить фиксацию своей работы.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header comsvcs.h

См. также раздел

IObjectContext