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

📄 readline.cs

📁 WF本质论一书的源码,要书籍的朋友同我联系.
💻 CS
字号:
using System;
using System.Workflow.ComponentModel;
using System.Workflow.Runtime;

namespace EssentialWF.Activities {
  public class ReadLine : Activity {
    private string text;
    public string Text {
      get { return this.text; }
    }

    protected override void Initialize(IServiceProvider provider) {
      WorkflowQueuingService qService =(WorkflowQueuingService)provider.GetService(typeof(WorkflowQueuingService));
      if (!qService.Exists(this.Name))
        qService.CreateWorkflowQueue(this.Name, true);
    }

    protected override ActivityExecutionStatus Execute(ActivityExecutionContext context) {
      WorkflowQueuingService qService = context.GetService<WorkflowQueuingService>();

      WorkflowQueue queue = qService.GetWorkflowQueue(Name);
      if (queue.Count > 0) {
        this.text = (string)queue.Dequeue();
        return ActivityExecutionStatus.Closed;
      }

      queue.QueueItemAvailable += this.ContinueAt;
      return ActivityExecutionStatus.Executing;
    }

    void ContinueAt(object sender, QueueEventArgs e) {
      ActivityExecutionContext context = sender as ActivityExecutionContext;

      WorkflowQueuingService qService = context.GetService<WorkflowQueuingService>();

      WorkflowQueue queue = qService.GetWorkflowQueue(Name);
      this.text = (string)queue.Dequeue();
      context.CloseActivity();
    }

    protected override void Uninitialize(IServiceProvider provider) {
      WorkflowQueuingService qService = (WorkflowQueuingService)provider.GetService(typeof(WorkflowQueuingService));

      if (qService.Exists(this.Name))
        qService.DeleteWorkflowQueue(this.Name);
    }
  }
}

⌨️ 快捷键说明

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