Share via


워크플로 디자이너에서 활동 대리자 정의 및 사용

.NET Framework 4.5에는 InvokeDelegate 활동에 대한 기본 제공 디자이너가 포함되어 있습니다. 이 디자이너는 ActivityDelegate 또는 ActivityAction 같은 ActivityFunc<TResult>에서 파생되는 작업에 대리자를 할당하는 데 사용할 수 있습니다.

작업 대리자 정의

  1. 워크플로 콘솔 애플리케이션 프로젝트를 만듭니다.

    참고 항목

    워크플로 프로젝트 템플릿이 표시되지 않으면 먼저 Visual Studio의 Windows Workflow Foundation 구성 요소를 설치합니다. 자세한 지침은 Windows Workflow Foundation 설치를 참조하세요.

  2. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가>새 항목을 선택합니다. 워크플로 범주를 선택하고 활동 항목 템플릿을 선택합니다. 새 활동 이름을 MyForEach.xaml로 지정하고 확인을 선택합니다.

    활동은 워크플로 디자이너에서 열립니다.

  3. 워크플로 디자이너에서 인수 탭을 클릭합니다.

  4. 인수 만들기를 클릭합니다. 새 인수의 이름을 Items로 지정합니다.

  5. 인수 형식 열에서 [T] 배열을 선택합니다.

  6. 형식 브라우저에서 개체를 선택하고 확인을 선택합니다.

  7. 인수 만들기를 다시 클릭합니다. 새 인수의 이름을 Body로 지정합니다. 새 인수의 방향 열에서 속성을 선택합니다.

  8. 인수 형식 열에서 를 선택합니다.

  9. 형식 브라우저에서 형식 이름 필드에 ActivityAction을 입력합니다. 트리 뷰에서 ActivityAction<T>을 선택합니다. 나타나는 드롭다운에서 개체를 선택하여 ActivityAction<Object> 형식을 인수에 할당합니다.

  10. While 활동을 도구 상자의 흐름 제어 섹션에서 디자이너 화면으로 끌어 놓습니다.

  11. While 활동을 선택하고 변수 탭을 선택합니다.

  12. 변수 만들기를 선택합니다. 새 변수의 이름을 Index로 지정합니다.

  13. 변수 형식 열에서 Int32를 선택합니다. 범위While로 두고 기본 열은 비워둡니다.

  14. While 활동의 Condition 속성을 index < Items.Length;로 설정합니다.

  15. InvokeDelegate 활동을 도구 상자의 기본 형식 섹션에서 While 활동의 Body.

  16. 대리자 드롭다운에서 Body를 선택합니다.

  17. InvokeDelegate 활동의 속성 그리드에서 대리자 인수 속성의 ... 단추를 클릭합니다.

  18. Argument라는 인수의 열에서 Items[Index]를 입력합니다. 확인을 클릭하여 DelegateArguments 대화 상자를 닫습니다.

  19. Assign 활동을 InvokeDelegate 활동 아래의 가로선으로 끌어 놓습니다. Assign 활동이 만들어지고 Sequence 활동이 MyForEach 활동의 Body 섹션에 두 활동을 포함하도록 자동으로 만들어집니다. Body 섹션은 단일 활동만 포함할 수 있으므로 시퀀스가 필요합니다. 새 Sequence 활동을 자동으로 만드는 기능은 .NET Framework 4.5의 새 기능입니다.

  20. Assign 활동의 To 속성을 index로 설정합니다. 할당 활동의 속성을 index+1로 설정합니다.

    사용자 지정 MyForEach 활동은 활동에 대한 입력으로 컬렉션의 값을 사용하여 Items 컬렉션을 통해 전달되는 값마다 임의의 활동을 한 번 호출합니다.

워크플로에서 사용자 지정 활동 사용

  1. Ctrl+Shift+B를 눌러 프로젝트를 빌드합니다.

  2. 솔루션 탐색기의 디자이너에서 Workflow1.xaml을 엽니다.

  3. 도구 상자의 MyForEach 활동을 디자이너 화면으로 끌어 놓습니다. 활동은 도구 상자에서 프로젝트와 이름이 같은 섹션에 있습니다.

  4. MyForEach 활동의 Items 속성을 new Object[] {1, "abc"}로 설정합니다.

  5. WriteLine 활동을 도구 상자의 기본 형식 섹션에서 MyForEach 활동의 Delegate:Body 섹션으로 끌어 놓습니다.

  6. WriteLine 활동의 Text 속성을 Argument.ToString()으로 설정합니다.

워크플로가 실행되면 콘솔에 다음과 같은 출력이 표시됩니다.

1abc