다음을 통해 공유


작업 3: 사용자 지정 활동 호스트 응용 프로그램 수정

이 자습서의 최종 단계에서는 Go 단추를 클릭할 때 워크플로를 시작하도록 호스트 응용 프로그램을 수정합니다. 호스트 응용 프로그램에서는 WebTearWorkflow 순차 워크플로의 Parameters 컬렉션을 사용하여 사용자가 요청한 URL을 전달합니다. 이 URL과 연결된 텍스트를 검색하기 위해 호스트 응용 프로그램에서는 WorkflowCompleted 이벤트에 대한 이벤트 처리기를 만듭니다. 이 이벤트의 WorkflowCompletedEventArgs 매개 변수에는 URL에 대한 텍스트가 포함되어 있습니다. 이 텍스트는 사용자에게 표시됩니다.

참고

이 연습을 차례대로 수행하는 것이 좋지만 반드시 그럴 필요는 없습니다. 샘플 프로젝트를 열고 다음 단원의 단계를 진행하여 이 연습을 시작할 수 있습니다.

WebTearWorkflow 순차 워크플로를 시작하려면

  1. MainForm 클래스에서 workflowRuntime이라는 private WorkflowRuntime 필드를 만듭니다.

    private WorkflowRuntime workflowRuntime;
    
  2. MainForm 클래스 생성자에서 workflowRuntime 개체의 새 인스턴스를 만듭니다.

    workflowRuntime = new WorkflowRuntime();
    
  3. workflowRuntime 개체의 StartRuntime 메서드를 호출하여 Windows Workflow Foundation 런타임 엔진을 시작합니다.

    workflowRuntime.StartRuntime();
    
  4. WorkflowCompleted 이벤트에 대한 이벤트 처리기를 만듭니다.

    이벤트 처리기는 WorkflowCompletedEventArgs 형식의 제네릭 EventHandler 대리자입니다. 이 이벤트 처리기에 메서드 이름 workflowRuntime_WorkflowCompleted를 지정합니다.

    workflowRuntime.WorkflowCompleted +=
        new EventHandler<WorkflowCompletedEventArgs>
        (workflowRuntime_WorkflowCompleted);
    
  5. MainForm 클래스의 workflowRuntime_WorkflowCompleted 메서드에서 If 문을 추가하여 data TextBox 컨트롤에 대한 InvokeRequired 속성이 true인지 확인합니다.

    1. data TextBox 컨트롤의 InvokeRequired 속성이 true이면 data TextBox 컨트롤의 Invoke 메서드를 호출하여 WorkflowCompletedEventArgs 형식의 새 제네릭 EventHandlerworkflowRuntime_WorkflowCompleted 메서드 이름을 이벤트 처리기 생성자에 매개 변수로 전달합니다.

    2. InvokeRequired 속성이 false이면 data TextBox 컨트롤의 Text 속성을 WorkflowCompletedEventArgs 매개 변수에 정의된 OutputParameters 컬렉션의 "Data" 값으로 설정합니다.

    private void workflowRuntime_WorkflowCompleted(object sender,
        WorkflowCompletedEventArgs e)
    {
        // Retrieve the downloaded page data
        if (data.InvokeRequired)
            data.Invoke(new EventHandler<WorkflowCompletedEventArgs>
                (workflowRuntime_WorkflowCompleted), sender, e);
        else
            data.Text = e.OutputParameters["Data"].ToString();
    }
    
  6. goButton_Click 메서드에서 type이라는 새 Type 개체를 만들어 WebTearWorkflow 클래스의 Type 개체로 설정합니다.

    Type type = typeof(WebTearWorkflow);
    
  7. String 키가 포함된 개체의 properties라는 새 제네릭 Dictionary 개체를 만듭니다.

    Dictionary<string, object> properties = new Dictionary<string, object>();
    
  8. properties 개체의 Add 메서드를 호출하여 "Url" 문자열과 address TextBox 컨트롤의 Text 속성을 매개 변수로 전달합니다.

    properties.Add("Url", address.Text);
    
  9. workflowRuntime 개체에 정의된 CreateWorkflow 메서드를 호출하여 type 및 properties 지역 변수를 매개 변수로 전달합니다.

    CreateWorkflow 메서드에서 반환된 개체에 정의된 Start 메서드를 호출합니다.

    workflowRuntime.CreateWorkflow(type, properties).Start();
    
  10. 응용 프로그램을 빌드하고 실행합니다.

코드 컴파일

코드 컴파일에 대한 자세한 내용은 코드 컴파일을 참조하십시오.

자습서의 완성된 버전을 보려면 사용자 지정 활동 총괄 자습서를 참조하십시오.

참고 항목

참조

WorkflowRuntime
WorkflowInstance
CreateWorkflow
Start
WorkflowCompleted
WorkflowCompletedEventArgs

기타 리소스

Hosting
자습서: Windows Workflow Foundation 런타임 호스팅

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.