⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dowhile.cs

📁 WF本质论一书的源码,要书籍的朋友同我联系.
💻 CS
字号:
using System;
using System.Workflow.ComponentModel;
  
namespace EssentialWF.Activities {
    public class DoWhile : CompositeActivity  {
        public static readonly DependencyProperty CompletionConditionProperty = DependencyProperty.Register("CompletionCondition",typeof(ActivityCondition),typeof(DoWhile),new PropertyMetadata(DependencyPropertyOptions.Metadata));

        public ActivityCondition CompletionCondition {
            get { return GetValue(CompletionConditionProperty) as ActivityCondition; }
            set { SetValue(CompletionConditionProperty, value); }
        }
            
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext context) {
            ExecuteBody(context);
            return ActivityExecutionStatus.Executing;
        }

        void ExecuteBody(ActivityExecutionContext context) {
            ActivityExecutionContextManager manager = context.ExecutionContextManager;

            Activity template = this.EnabledActivities[0];

            ActivityExecutionContext newContext = manager.CreateExecutionContext(template);
            Activity newActivity = newContext.Activity;

            newActivity.Closed += this.ContinueAt;
            newContext.ExecuteActivity(newActivity);
        }

        void ContinueAt(object sender, ActivityExecutionStatusChangedEventArgs e) {
            e.Activity.Closed -= this.ContinueAt;
            ActivityExecutionContext context = sender as ActivityExecutionContext;
            ActivityExecutionContextManager manager = context.ExecutionContextManager;
            ActivityExecutionContext innerContext = manager.GetExecutionContext(e.Activity);

            manager.CompleteExecutionContext(innerContext);

            if (this.ExecutionStatus == ActivityExecutionStatus.Executing) {
            if ((CompletionCondition == null) || (CompletionCondition.Evaluate(this, context)))
              ExecuteBody(context);
            else
              context.CloseActivity();
            }
        }
        //cancellation/fault handling logic omitted
        //...
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -