繁体   English   中英

如何取消WF4中的儿童活动?

[英]How to cancel child activities in WF4?

我创建了一个带有子活动集合的自定义本机活动。 如果其中一项活动失败,我将尝试取消儿童活动。 调用context.CancelChildren()不会在子活动中调用cancel

下面是示例:

public sealed class MyCompositeActivity : NativeActivity
{
    public Collection<Activity> Activities { get; set; }

    protected override void Execute(NativeActivityContext context)
    {
        ScheduleActivity(context);
    }

    protected override void CacheMetadata(NativeActivityMetadata metadata)
    {
        base.CacheMetadata(metadata);

        metadata.SetChildrenCollection(Activities);
     }

    private void ScheduleActivity(NativeActivityContext context)
    {
        // Get next activity
        ....
        context.ScheduleActivity(nextActivity, OnActivityCompleted, OnActivityFaulted);
    }

    private static void OnActivityFaulted(NativeActivityFaultContext context, Exception exception, ActivityInstance faultedInstance)
    {
        context.HandleFault();
        context.CancelChildren();
    }
}

取消要求执行活动。 因此,要么是等待书签恢复的异步活动,要么是等待子活动完成的复合活动。 发生取消的最常见的地方,尽管不是唯一的地方是,如果有多个并行分支,并且一个分支引发异常。 由于存在未处理的异常,其他预订无法继续运行,因此已被取消。

从您提供的代码示例来看,似乎没有并行行为,并且您在上一个活动完成之后计划活动。 由于执行的单个活动会引发错误,因此没有其他要取消的活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM