다음을 통해 공유


IObjectContext::D isableCommit 메서드(comsvcs.h)

개체의 트랜잭션 업데이트가 일관되지 않은 상태이며 현재 상태에서 커밋할 수 없음을 선언합니다.

구문

HRESULT DisableCommit();

반환 값

이 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 Description
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
헤더 comsvcs.h

추가 정보

IObjectContext