次の方法で共有


WorkflowApplication.Cancel メソッド

定義

ワークフロー インスタンスを取り消します。

オーバーロード

Cancel()

ワークフロー インスタンスを取り消します。

Cancel(TimeSpan)

指定されたタイムアウト期間を使用して、ワークフロー インスタンスを取り消します。

注釈

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

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

Cancel()

ワークフロー インスタンスを取り消します。

public:
 void Cancel();
public void Cancel ();
member this.Cancel : unit -> unit
Public Sub Cancel ()

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

Starting the workflow.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Idle.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Canceled  
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac 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);
    }
};

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

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

wfApp.Cancel();

注釈

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

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

適用対象

Cancel(TimeSpan)

指定されたタイムアウト期間を使用して、ワークフロー インスタンスを取り消します。

public:
 void Cancel(TimeSpan timeout);
public void Cancel (TimeSpan timeout);
member this.Cancel : TimeSpan -> unit
Public Sub Cancel (timeout As TimeSpan)

パラメーター

timeout
TimeSpan

取り消し操作が取り消されて TimeoutException がスローされるまでに、操作が完了する必要がある間隔。

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

Starting the workflow.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Idle.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Canceled  
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac 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);
    }
};

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

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

wfApp.Cancel();

注釈

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

適用対象