다음을 통해 공유


WorkflowInstance.Terminate(String) 메서드

정의

워크플로 인스턴스를 동기 방식으로 종료합니다.

public:
 void Terminate(System::String ^ error);
public void Terminate (string error);
member this.Terminate : string -> unit
Public Sub Terminate (error As String)

매개 변수

error
String

워크플로 인스턴스를 종료한 이유에 대한 설명입니다.

예외

워크플로 런타임 엔진이 실행되고 있지 않은 경우

예제

다음 코드 예제에서는 WorkflowInstance 개체에서 Terminate를 호출하는 방법을 보여 줍니다.

// Create a workflow runtime
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
// Create a workflow instance
WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(typeof(Workflow1));
// Start the workflow
workflowInstance.Start();
// Terminate the workflow, passing in a message
workflowInstance.Terminate("Workflow manually terminated");
' Create a workflow runtime
Dim workflowRuntime As New WorkflowRuntime()
' Create a workflow instance
Dim workflowInstance As WorkflowInstance = workflowRuntime.CreateWorkflow(GetType(Workflow1))
' Start the workflow
workflowInstance.Start()
' Terminate the workflow, passing in a message
workflowInstance.Terminate("Workflow manually terminated")

설명

워크플로 인스턴스는 동기 방식으로 종료됩니다. 호스트가 Terminate를 호출하여 워크플로 인스턴스를 종료합니다. 워크플로 런타임 엔진은 메모리 내 워크플로 인스턴스를 지우고 인스턴스가 메모리에서 지워졌음을 지속성 서비스에 알립니다. SqlWorkflowPersistenceService의 경우 이는 해당 워크플로 인스턴스의 모든 상태 정보가 종료 시 데이터베이스에서 삭제됨을 의미합니다. 이전에 저장된 유지 지점에서 워크플로 인스턴스를 다시 로드할 수 없습니다.

메모리 내 워크플로 인스턴스를 지우고 지속성 서비스에 종료를 알린 후 Terminate 메서드는 WorkflowTerminated 이벤트를 발생시키고 reason에 포함된 MessageWorkflowTerminatedException 속성에 WorkflowTerminatedEventArgs을 포함하여 전달합니다.

Terminate가 메모리 내 워크플로 인스턴스를 지우고 지속성 서비스에 종료를 알리는 반면 Terminate는 단순히 메모리 내 워크플로 인스턴스를 지우며 마지막 유지 지점에서 해당 인스턴스를 다시 시작할 수 있다는 점에서 AbortAbort와 다릅니다.

적용 대상