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的好处是,可以将工作流与事件挂钩,并且可以使用更复杂的服务(如持久化,书签等)
  • 相关阅读:
    实习日记7.28
    实习日记7.27
    实习总结(第三周)
    实习日记7.26
    实习日记7.25
    实习总结(第二周)
    实习总结(第一周)
    实习日记7.22
    实习日记7.21
    5月4下
  • 原文地址:https://www.cnblogs.com/zzw1986/p/4702228.html
Copyright © 2011-2022 走看看