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 处理程序。

适用于