2010-07-27 4 views
1

TransactionScope 클래스에서 사용자 정의 제한 시간 값을 사용할 수 있음을 알고 있습니다. 그러나 {} 블록 사용을 끝내는 동안 타임 아웃 예외가 발생합니다. 경과 한 타임 아웃 값의 직후에이 timeoutexception을 던지는 법?TransactionScope 및 Timeout 문제

답변

2

이것은 불가능합니다.

TransactionScope는 트랜잭션을 시작한 시간을 저장 한 다음 트랜잭션을 커밋 할 때 그 시간을 확인합니다.
임의의 지점에서 예외를 throw 할 수있는 방법이 없습니다.

일반적으로 (관리되는 코드의 실행 중)에서 지점에 던져 질 수있는 유일한 예외는 ThreadAbortException입니다.

따라서 원한다면 시간 초과 기간 동안 잠자기 상태 인 별도의 스레드를 만들어 원래 스레드를 중단시킬 수 있습니다.
하지만 그건 끔찍한 생각입니다.

+0

왜 솔루션은 끔찍한가요? 너무 좋아 보인다. 구현하고 잘 작동합니다. 정말 고맙습니다. – mkus

+0

스레드 중단은 코드를 어디에서나 중단시키고 공유 상태를 망칠 수 있습니다. – SLaks

+0

http://www.interact-sw.co.uk/iangblog/2004/11/12/cancellation – SLaks