다음을 통해 공유


IEnlistmentNotification.InDoubt(Enlistment) 메서드

정의

트랜잭션이 의심스러운 상태임을 참여한 개체에게 알립니다.

public:
 void InDoubt(System::Transactions::Enlistment ^ enlistment);
public void InDoubt (System.Transactions.Enlistment enlistment);
abstract member InDoubt : System.Transactions.Enlistment -> unit
Public Sub InDoubt (enlistment As Enlistment)

매개 변수

enlistment
Enlistment

트랜잭션 관리자에게 응답을 보내는 데 사용되는 Enlistment 개체입니다.

설명

트랜잭션 관리자가 단일 지속성 리소스에 대한 단일 단계 커밋 작업을 호출한 다음 트랜잭션 결과를 가져오기 전에 지속성 리소스에 대한 연결이 끊어지면 이 메서드는 휘발성 리소스에 대해 호출됩니다. 이 시점에서 트랜잭션 결과를 안전하게 확인할 수 없습니다.

InDoubt 트랜잭션의 최종 상태로 간주되므로 호출하거나 Rollback 호출InDoubt한 후에는 Commit 안 됩니다.

참고

휘발성 리소스에 대해 이 메서드를 구현하면 영향을 받는 데이터에 대해 이해하는 복구 또는 포함 작업을 수행해야 합니다. 또한 작업이 완료되면 매개 변수의 메서드를 enlistment 호출 Done 해야 합니다.

리소스 관리자가 지속적으로 참여했지만 메서드를 호출 Done 하여 응답하지 않는 경우 트랜잭션 관리자는 리소스 관리자가 전화를 받았는지 InDoubt 확실하지 않습니다. 따라서 트랜잭션 관리자는 응답을 계속 대기하고 이 트랜잭션과 관련된 정보를 유지 관리합니다. 호출되지 않는 경우 Done 이 정보는 메모리 또는 시스템 전체 리소스에서 무기한 유지됩니다. 이로 인해 리소스를 회수할 수 없게 됩니다. 분산 트랜잭션의 경우 결국 MSDTC 프로세스를 중지하는 MSDTC 로그를 채울 수 있습니다. 관리되는 System.Transactions트랜잭션의 경우 리소스 관리자 프로세스의 메모리 사용량이 점진적이고 지속적으로 증가합니다. 따라서 리소스 관리자가 준비 작업으로 완료되면 메서드를 호출 Done 하는 것이 중요합니다.

적용 대상