이 항목은 Windows Workflow Foundation 4에 적용됩니다.
이 샘플에서는 워크플로 내의 serialize할 수 없고 삭제 가능한 상태를 처리하는 방법을 보여 줍니다. 이때 워크플로에서 serialize 불가능 상태를 지속하려고 시도하지 않는다는 점이 중요하며 삭제 가능한 개체를 워크플로에 사용하고 나면 이를 정리해야 한다는 점도 중요합니다.
데모
NoPersistScope 사용자 지정 활동 및 디자이너
NoPersistZone 활동 사용
샘플 워크플로를 실행하면 CreateTextWriter라는 사용자 지정 활동을 통해 TextWriter 형식의 개체가 만들어지고 이 개체가 워크플로 변수에 저장됩니다. TextWriter는 IDisposable 개체입니다. 샘플이 실행되는 디렉터리의 'out.txt'라는 파일에 텍스트를 쓰도록 구성되어 있는 이 TextWriter는 WriteLine 활동에 사용되며 사용자가 콘솔에 입력하는 모든 텍스트를 그대로 반복합니다.
이 echo 논리는 워크플로가 지속되지 않도록 하는 NoPersistScope 활동 내에서 실행됩니다. 이 활동의 코드도 이 샘플에 포함되어 있습니다. 사용자가 콘솔에 unload를 입력하면 호스트에서 워크플로 인스턴스를 지속하려고 시도하지만 워크플로가 NoPersistScope를 벗어나지 못하므로 이 작업이 제한 시간을 초과하게 됩니다. 또한 이 워크플로에서는 TextWriter 개체 사용을 마쳤을 때 Dispose라는 사용자 지정 활동을 사용하여 이 개체를 삭제합니다. Dispose 활동은 Try 블록을 실행하는 동안 예외가 발생하더라도 문제 없이 실행되도록 하기 위해 TextWriter 변수가 선언된 TryCatch 활동의 Finally 블록 내에 배치됩니다.
exit을 입력하면 워크플로 인스턴스를 완료하고 프로그램을 종료할 수 있습니다.
샘플을 실행하려면
Visual Studio 2010에서 NoPersistZone.sln 솔루션을 엽니다.
솔루션을 빌드하려면 F6 키를 누르거나 빌드 메뉴에서 솔루션 빌드를 선택합니다.
빌드가 성공적으로 완료되면 F5 키를 누르거나 디버그 메뉴에서 디버깅 시작을 선택합니다. 또는 Ctrl+F5를 누르거나 디버그 메뉴에서 디버깅하지 않고 시작을 선택하여 디버깅 과정을 생략하고 시작할 수도 있습니다.
정리하려면(옵션)
- SQL 인스턴스 저장소를 제거하려면 Cleanup.cmd를 실행합니다.
참고: |
|---|
컴퓨터에 이 샘플이 이미 설치되어 있을 수도 있습니다. 계속하기 전에 다음(기본) 디렉터리를 확인하십시오.
<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\Scenario\ActivityLibrary\NoPersistScope
|
참고: