zoukankan      html  css  js  c++  java
  • 第三个C#工作流实例--使用WorkflowAppliction承载工作流

    除了Invoke方法,WorkflowInvoker中其他有趣的成员是BeginInvoke()和EndInvoke(),他们使用.net异步委托模式,在另一个线程中启动工作流。如果希望对WF运行时操作工作流有更多的控制,可以使用WorkflowApplication

            要保存和加载一个使用WF持久化服务长期运行的工作流,可以使用WorkflowApplication。它具有接收工作流实例生命周期中触发的各种事件的通知、WF“书签”等其他高级特性。
    下面修改第二个实例的Main方法,使用WorkflowApplication替代WorkflowInvoker
    static void Main(string[] args)
            {
                string wfData = Console.ReadLine();
     
                //这里用Dictionary类型,因为Invoke重载接受这种键值对的类型
                Dictionary wfArgs = new Dictionary();
     
                //使用键值对,键为我们刚才加的参数名称,将数据存入到字典中
                wfArgs.Add("Message", wfData);
     
                AutoResetEvent waitHandler = new AutoResetEvent(false);
                //传递给工作流
                WorkflowApplication app = new WorkflowApplication(new Activity1(), wfArgs);
                //将事件与app挂钩,当工作流结束前,通知其他线程,并打印一条信息
                app.Completed = (completedArgs) =>
                {
                    waitHandler.Set();
                    Console.WriteLine("the workflow is done");
                };
                //开启工作流
                app.Run();
                //在工作流程结束之前一直等待
                waitHandler.WaitOne();
                Console.WriteLine("结束了");
            }
    输出结果:
    第三个C#工作流实例--使用WorkflowAppliction承载工作流

    使用WorkflowApplication的好处是,可以将工作流与事件挂钩,并且可以使用更复杂的服务(如持久化,书签等)
  • 相关阅读:
    C#实现京东登录密码加密POST
    查询SQL Server数据库所有表字段备注
    DataGridView数值列和日期列
    (转)Android 系统 root 破解原理分析
    Dynamics AX 中重点数据源方法
    .NET中Debug模式与Release模式
    DotNetBar的初步使用
    省市区联动小功能
    多余的Using Namespaces或引用会影响程序的执行效率么?
    MSIL指令集
  • 原文地址:https://www.cnblogs.com/zzw1986/p/4702228.html
Copyright © 2011-2022 走看看