다음을 통해 공유


보정 가능한 활동에 대한 취소 처리기

이 항목은 Windows Workflow Foundation 4에 적용됩니다.

이 샘플에서는 CompensableActivity에 대해 취소 처리기를 사용하는 방법을 보여 줍니다.

이 샘플에는 CompensableActivity 취소를 사용하는 방법을 보여 주는 두 가지 시나리오가 포함되어 있습니다. 첫째 시나리오에는 보정 가능한 루트 활동이 있으며 이 활동에는 보정 가능한 자식 활동 세 개가 포함되어 있습니다. 자식 활동 두 개는 해당 활동 본문의 실행을 성공적으로 마칩니다. 그러나 셋째 자식 활동의 경우에는 해당 본문을 실행하는 동안 예외가 발생합니다. 이 예외를 처리하기 위해 셋째 활동의 진행이 취소되며, 그 후에는 루트 활동의 취소가 트리거됩니다. 이 샘플에서 루트 활동의 논리는 앞서 완료된 다른 두 자식 활동을 보정하는 것입니다.

Try
{
    CA 
    {
        CA1 
        {
        }
        CA2
        {
        }
        CA3
        {
            //Exception here
            // Then this will get cancelled
        }

       // Cancellation for the root activity automatically gets called, which, in turn, adds some logic to revert what was done (Or can decide to actually confirm CA1 & CA2 if the user so desires).
    }
}
Catches {
// Can do more stuff...
}

둘째 시나리오에서는 TryCatch 분기 전에 완료되는 Delay와 병렬로 TryCatch를 실행하는 방법을 보여 줍니다. 첫째 분기를 완료하고 나면 완료 조건이 true로 설정되므로 다른 분기가 취소됩니다.

Parallel 
{
    Branch1 
    {
        // Small Delay that times out (timeout1) before branch2.
    }
    Branch2 
    {
        CA 
        {
            CA1 
            {
            }
            CA2 
            {
            }
            CA3 
            {
            }
            If (timeout1)  
            {
                call Cancel CA
            }
        }
    }
}

샘플을 설치, 빌드 및 실행하려면

  1. Visual Studio 2010을 사용하여 CompensationCancellation.sln을 엽니다.

  2. F6 키를 누르거나 빌드 메뉴에서 "솔루션 빌드"를 선택하여 샘플을 빌드합니다.

  3. F5 키를 누르거나 디버그 메뉴에서 "디버깅 시작"을 선택하여 샘플을 실행합니다. 또는 Ctrl+F5를 누르거나 디버그 메뉴에서 "디버깅하지 않고 시작"을 선택하여 샘플을 디버깅하지 않고 실행할 수도 있습니다.

Dd807518.Important(ko-kr,VS.100).gif 참고:
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.

<InstallDrive>:\WF_WCF_Samples

이 디렉터리가 없으면 Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4로 이동하여 WCF(Windows Communication Foundation) 및 WF 샘플을 모두 다운로드하십시오. 이 샘플은 다음 디렉터리에 있습니다.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\Compensation\CompensationCancellation