工作流编程循序渐进(1:代码活动与时间延迟活动)
2010-09-30 20:57:59 来源:WEB开发网最后,我们来看一下控制台主程序是如何创建工作流实例,并启动工作流执行的。切换到控制台主程序Program.cs。此时,系统已经为我们自动生成了如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Workflow.Runtime;
using System.Workflow.Runtime.Hosting;
namespace CodeAndDelay
{
class Program
{
static void Main(string[] args)
{
//......经常在此添加一些初始化代码
//创建工作流实例,并启动工作流执行。注意:工作流是以异步的独立的工作线程方式执行的
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();};
workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(CodeAndDelay.Workflow1));
instance.Start();
waitHandle.WaitOne();
}
//......在此经常执行一些工作流执行后的善后工作
}
}
}
注意:有关上面代码中AutoResetEvent事件等的详细讨论将在后续文章中介绍。
观察运行结果
按F5运行控制台程序,一般顺利的话,将得到如下图所示运行时快照。
图片看不清楚?请点击这里查看原图(大图)。
完全合乎意料的结果,一切尽在不言中!
备注(FROM MSDN)
DelayActivity活动有一个InitializeTimeoutDuration 事件,它发生在在超时持续时间开始之前发生。对于此事件,微软的建议是:不应使用此事件来设置 DelayActivity 的 TimeoutDuration。而应在工作流的InitializeComponent 方法中设置超时持续时间。
出处: http://zhuxianzhong.blog.51cto.com/157061/203300
更多精彩
赞助商链接