相关文章:
WF4.0 Beta1之旅(1):基本介绍
WF4.0 Beta1之旅(2):异常处理
WF4.0 Beta1之旅(3):全新的FlowChart
WF4.0中加入了书签(Bookmark)机制,可以让活动在书签的位置挂起,等待恢复。如果我们需要在活动没有完成的时候,提供额外的数据,这个时候我
们就可以给活动注册一个书签,我们需要使用CreateNamedBookmark方法创建书签,该方法有三个参数一个名字,一个BookmarkCallback的委托,当
活动恢复的时候执行。和BookmarkOptions,Runtime为每个工作流实例维护一个Bookmarks的Table,每次有Bookmark要恢复的时候都回去check。
1.下面我们就创建一个这样的自定义活动,Read.cs,代码如下:
using System; using System.Activities; public sealed class Read<T> : NativeActivity<T> { public Read() : base() { } public string BookmarkName { get; set; } protected override void Execute(ActivityExecutionContext context) { context.CreateNamedBookmark(this.BookmarkName, new BookmarkCallback(this.Continue)); } void Continue(ActivityExecutionContext context, Bookmark bookmark, object obj) { this.Result.Set(context, (T)obj); } }
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.宿主程序如下:
namespace Bookmarks { using System; using System.Linq; using System.Threading; using System.Activities; using System.Activities.Statements; using System.Collections; class Program { static void Main(string[] args) { ManualResetEvent completionEvent = new ManualResetEvent(false); AutoResetEvent idleEvent = new AutoResetEvent(false); WorkflowInstance instance = new WorkflowInstance(new Sequence1()); instance.OnIdle += delegate { idleEvent.Set(); return IdleAction.Nothing; }; instance.OnCompleted += delegate { completionEvent.Set(); }; instance.Run(); bool lastBookmark = false; while (!lastBookmark) { idleEvent.WaitOne(); IList bookmarks = instance.GetAllBookmarks(); if (bookmarks == null || bookmarks.Count == 0) { break; } lastBookmark = (bookmarks.Count == 1); while (true) { Console.Write("Bookmarks:"); foreach (BookmarkInfo info in bookmarks) { Console.Write(" '" + info.BookmarkName + "'"); } Console.WriteLine(); Console.WriteLine("输入要恢复的书签名"); string name = Console.ReadLine(); Console.WriteLine("输入传入的数据 '{0}'", name); string str = Console.ReadLine(); try { instance.ResumeBookmark(name, str); break; } catch (BookmarkNotFoundException e) { Console.WriteLine(e.Message); } } } completionEvent.WaitOne(); Console.WriteLine("Press enter to exit"); Console.ReadLine(); } } }
通过 IList bookmarks = instance.GetAllBookmarks();获得所有书签。
通过instance.ResumeBookmark(name, str);恢复活动的执行。
4.结果如下:
发表评论
-
平淡的2007
2007-12-24 08:04 783早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1380今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 849[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 598[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 735[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1101[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 881当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 806Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 809在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 659我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1134MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 665本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 771本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 717WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1024由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 763[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 657[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 691[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1068一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 907首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
Adobe Reader 书签插件:插件是一个JS文件,下载后将.js文件复制到软件安装目录JavaScript文件夹下,参考C:\Program Files (x86)\Adobe\Reader 11.0\Reader\Javascripts\bookmark_page.js
:bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :...
KanbanG只是开发人员个人使用的另一个任务跟踪器。 现在它提供了什么? 好吧,它提供了: 根据需要创建任意数量的仪表板! 根据需要创建任意数量的跟踪列(例如,待办事项,进行中,完成等。) 为每列创建“ n”...
TLL::bookmark_tabs:今天林学到了
django-markupfield::bookmark_tabs:Django的MarkupField
React DemoTab CLI :bookmark_tabs: 轻松创建 React 组件的演示 单独维护示例代码和演示会很痛苦,很容易使它们不同步:person_gesturing_NO: 代码不能撒谎,演示代码可以 :collision: DemoTab CLI 使您的代码与演示...
:bookmark_tabs: 文章 :bookmark_tabs: 视频 :bookmark_tabs: 视频 :movie_camera: 视频 :bookmark_tabs: 文章 :bookmark_tabs: 文章 :bookmark_tabs: 文章 :bookmark_tabs: 文章 :bookmark_tabs: ...
suboptimaleng.github.io :bookmark: Gridsome Blog 1.0
切换到英文: 坎比亚人: 切换到中文: Uma coisa que eu semper fico emdúvidana ... :bookmark: :bookmark: :bookmark: :bookmark: :bookmark: :bookmark: :bookmark: :bookmark: :books: nd迪斯 :bookmark:
观念 该资料库包含有关...tabs::bookmark_tabs:单元测试-在Java中使用:bookmark_tabs:未定义类型的列表-从抽象到通用级别:bookmark_tabs:在Java异常 Python :bookmark_tabs:入门套件:bookmark_tabs:语言:bookmark_tabs:
clojure-essential-ref::bookmark:cider-doc到“ Clojure,基本参考”
React DemoTab :bookmark_tabs: 一个 React 组件,可以轻松创建其他组件的演示 安装 npm install react-demo-tab Demo DemoTab 示例 Example import React from 'react'; 从 'react-dom' 导入 ReactDOM; 从'react-...
ReactDemoTab CLI :bookmark_tabs: 轻松创建React组件的演示分别维护示例代码和演示很麻烦,很容易使它们不同步 :person_gesturing_NO: 代码不能撒谎,演示代码可以撒谎 :collision: DemoTab CLI通过演示使您的代码...
文章::bookmark:我的学习笔记和记忆-分享我的学习片段和与你的回忆
:bookmark: 古登标签 这是的插件。 它允许您从字体视图和编辑视图中编辑字形标记。 特征 从字体视图和编辑视图查看和编辑标签。 使用自动补全功能可防止在标签名称中输入错误。 通过单击标签右侧的小显示按钮来...
linux工具 记录我每天使用Linux工具。 :penguin:
脚本教程带Rescript官方文件的Rescript研究 :bookmark_tabs:
文件管理:paw_prints: 第4讲-批处理脚本编程第1部分(更新 ing:grinning_face_with_smiling_eyes:)第2部分:star: 第5讲-系统管理第1部分第2部分:check_mark: 第6讲-网络管理第1部分第2部分:artist_palette: 第7讲-...
雷克斯使用RegExp像Pro一样转换文本。动机有时您需要对文本进行批处理清理或转换。 您可以在编辑器中使用多光标手动逐行手动编辑,应用RegExp查找和替换,或为此编写脚本。 有时手动编辑可能会很费力,编写脚本可能...
Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何...