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 트랜잭션의 최종 상태로 간주되므로 호출하거나 Commit 호출Rollback한 후에는 안 InDoubt 됩니다.

메모

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

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

적용 대상