次の方法で共有


WorkflowApplication.Terminate メソッド

定義

ワークフロー インスタンスを終了します。

オーバーロード

Terminate(Exception)

指定された例外を使用して、ワークフロー インスタンスを終了します。

Terminate(String)

指定されたエラー メッセージを使用して、ワークフロー インスタンスを終了します。

Terminate(Exception, TimeSpan)

指定された例外およびタイムアウト期間を使用して、ワークフロー インスタンスを終了します。

Terminate(String, TimeSpan)

指定されたエラー メッセージおよびタイムアウト期間を使用して、ワークフロー インスタンスを終了します。

Terminate(Exception)

指定された例外を使用して、ワークフロー インスタンスを終了します。

public:
 void Terminate(Exception ^ reason);
public void Terminate (Exception reason);
member this.Terminate : Exception -> unit
Public Sub Terminate (reason As Exception)

パラメーター

reason
Exception

ワークフロー インスタンスを終了する理由。

次の例では、WorkflowApplication を使用してワークフローをホストしています。 指定のワークフロー定義を使用して WorkflowApplication インスタンスが構築され、必要なワークフローのライフサイクル イベントが処理され、Run の呼び出しを使用してワークフローが呼び出されます。 ワークフローの開始後に、Terminate が呼び出されます。 このワークフローが終了すると、次の出力がコンソールに表示されます。

Starting the workflow.   
Workflow e6b33409-f010-49f1-82ce-56f8baabe5e5 Terminated.  
Exception: System.ApplicationException  
Terminating the workflow.   
Workflow e6b33409-f010-49f1-82ce-56f8baabe5e5 unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

// Run the workflow.
wfApp.Run();

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Terminate(new ApplicationException("Terminating the workflow."));

注釈

このメソッドは、ワークフロー インスタンスの終了をスケジュールします。 終了操作が完了したら通知されるようにするには、Completed ハンドルを使用します。

既定では、Terminate 操作は 30 秒以内に完了する必要があります。完了しない場合、TimeoutException がスローされます。

適用対象

Terminate(String)

指定されたエラー メッセージを使用して、ワークフロー インスタンスを終了します。

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

パラメーター

reason
String

ワークフロー インスタンスを終了する理由。

次の例では、WorkflowApplication を使用してワークフローをホストしています。 指定のワークフロー定義を使用して WorkflowApplication インスタンスが構築され、必要なワークフローのライフサイクル イベントが処理され、Run の呼び出しを使用してワークフローが呼び出されます。 ワークフローの開始後に、Terminate が呼び出されます。 このワークフローが終了すると、次の出力がコンソールに表示されます。

Starting the workflow.   
Workflow f87c6f91-4fe4-40b9-b7cb-4f1bd071bf84 Terminated.   
Exception: System.Activities.WorkflowApplicationTerminatedException  
Terminating the workflow.   
Workflow f87c6f91-4fe4-40b9-b7cb-4f1bd071bf84 unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

// Run the workflow.
wfApp.Run();

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Terminate("Terminating the workflow.");

注釈

このメソッドは、ワークフロー インスタンスの終了をスケジュールします。 終了操作が完了したら通知されるようにするには、Completed ハンドルを使用します。

既定では、Terminate 操作は 30 秒以内に完了する必要があります。完了しない場合、TimeoutException がスローされます。

適用対象

Terminate(Exception, TimeSpan)

指定された例外およびタイムアウト期間を使用して、ワークフロー インスタンスを終了します。

public:
 void Terminate(Exception ^ reason, TimeSpan timeout);
public void Terminate (Exception reason, TimeSpan timeout);
member this.Terminate : Exception * TimeSpan -> unit
Public Sub Terminate (reason As Exception, timeout As TimeSpan)

パラメーター

reason
Exception

ワークフロー インスタンスを終了する理由。

timeout
TimeSpan

Terminate(Exception, TimeSpan) 操作が取り消されて TimeoutException がスローされるまでに、操作が完了する必要がある間隔。

次の例では、WorkflowApplication を使用してワークフローをホストしています。 指定のワークフロー定義を使用して WorkflowApplication インスタンスが構築され、必要なワークフローのライフサイクル イベントが処理され、Run の呼び出しを使用してワークフローが呼び出されます。 ワークフローの開始後に、Terminate が呼び出されます。 このワークフローが終了すると、次の出力がコンソールに表示されます。

Starting the workflow.   
Workflow de28efe5-9057-472b-8d95-899c249893c5 Terminated.  
Exception: System.ApplicationException  
Terminating the workflow.   
Workflow de28efe5-9057-472b-8d95-899c249893c5 unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

// Run the workflow.
wfApp.Run();

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Terminate(new ApplicationException("Terminating the workflow."),
    TimeSpan.FromSeconds(15));

注釈

このメソッドは、ワークフローの終了をスケジュールします。 終了操作が完了したら通知されるようにするには、Completed ハンドルを使用します。

適用対象

Terminate(String, TimeSpan)

指定されたエラー メッセージおよびタイムアウト期間を使用して、ワークフロー インスタンスを終了します。

public:
 void Terminate(System::String ^ reason, TimeSpan timeout);
public void Terminate (string reason, TimeSpan timeout);
member this.Terminate : string * TimeSpan -> unit
Public Sub Terminate (reason As String, timeout As TimeSpan)

パラメーター

reason
String

ワークフロー インスタンスを終了する理由。

timeout
TimeSpan

Terminate(String, TimeSpan) 操作が取り消されて TimeoutException がスローされるまでに、操作が完了する必要がある間隔。

次の例では、WorkflowApplication を使用してワークフローをホストしています。 指定のワークフロー定義を使用して WorkflowApplication インスタンスが構築され、必要なワークフローのライフサイクル イベントが処理され、Run の呼び出しを使用してワークフローが呼び出されます。 ワークフローの開始後に、Terminate が呼び出されます。 このワークフローが終了すると、次の出力がコンソールに表示されます。

Starting the workflow.   
Workflow 2897d2ef-377e-4224-ae93-5c19b38f487c Terminated.   
Exception: System.Activities.WorkflowApplicationTerminatedException  
Terminating the workflow.   
Workflow 2897d2ef-377e-4224-ae93-5c19b38f487c unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

// Run the workflow.
wfApp.Run();

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Terminate("Terminating the workflow.", TimeSpan.FromSeconds(15));

注釈

このメソッドは、ワークフロー インスタンスの終了をスケジュールします。 終了操作が完了したら通知されるようにするには、Completed ハンドルを使用します。

適用対象