WF4.0中加入了书签(Bookmark)机制,可以让活动在书签的位置挂起,等待恢复。如果我们需要在活动没有完成的时候,提供额外的数据,这个时候我
们就可以给活动注册一个书签,我们需要使用CreateNamedBookmark方法创建书签,该方法有三个参数一个名字,一个BookmarkCallback的委托,当
活动恢复的时候执行。和BookmarkOptions,Runtime为每个工作流实例维护一个Bookmarks的Table,每次有Bookmark要恢复的时候都回去check。
1.下面我们就创建一个这样的自定义活动,Read.cs,代码如下:
2.设计工作流
工作流中包含一个Parallel和一个WriteLine,工作流中的变量如下:
Name:x type:String scope:Sequence
Name:y type:String scope:Sequence
Parallel中有两个Read活动,两个read活动的BookmarkName属性为x,y。Result属性也为x,y
3.宿主程序如下:
通过 IList bookmarks = instance.GetAllBookmarks();获得所有书签。
通过instance.ResumeBookmark(name, str);恢复活动的执行。
4.结果如下: