




















这个练习中,你会修改我们在上面创建的工作流,使它在运行起来后,可以向内部接收数据。你还可以在Code活动中修改代码来显示输入的数据值。最后,你会将我们上个练习中的项目,改为一个Windows窗体宿主程序。它可以允许我们输入值,并创建一个我们自己的工作流示例。
注意:当工作流运行起来后,有两个接收数据的方法。他们是参数和事件。如果使用参数,工作流必须使用一个包含参数名和参数类型定义的列表。这些参数会在宿主陈故乡启动一个新的工作流实例后,传递近来。如果使用事件,工作流作者会加入一个可以接收事件和事件相关数据的活动。事件由宿主定义,而且一个自定义的活动会被用来处理事件响应。我们将会在这个练习中使用参数,而在练习三中会使用基于事件的活动。
1: private string firstName;
2: 3: public string FirstName
4: {5: get { return firstName; }
6: set { firstName = value; }
7: }1: private string lastName;
2: 3: public string LastName
4: {5: get { return lastName; }
6: set { lastName = value; }
7: }1: private void codeActivity1_CodeHandler(object sender, EventArgs e)
2: {3: //Console.WriteLine("Hello,World!");
4: System.Windows.Forms.MessageBox.Show("Hello World: " + FirstName + " " + LastName);
5: }现在我们准备测试修改后的工作流。和我们在练习一中使用控制台应用程序不同的是,在这里我们添加一个Windows窗体应用程序和一些预定义的代码作为我们工作流的宿主。
1: using System.Workflow.ComponentModel;
2: using System.Workflow.Runtime;
3: using System.Workflow.Runtime.Hosting;
1: private WorkflowRuntime wr;
2: private string workflowAssembly = "";
3: private string workflowTypeName = "";
1: workflowAssembly = "HelloWorldWorkflow";
2: workflowTypeName = "HelloWorldWorkflow.Workflow1";
1: private void Form1_FormClosed(object sender, FormClosedEventArgs e)
2: {3: if (wr != null)
4: {5: if (wr.IsStarted)
6: { 7: wr.StopRuntime(); 8: } 9: } 10: }1: private void btnStartWorkflow_Click(object sender, EventArgs e)
2: {3: if (wr == null)
4: {5: wr = new WorkflowRuntime();
6: wr.StartRuntime(); 7: }8: Dictionary<string, object> parameters = new Dictionary<string, object>();
9: parameters.Add("FirstName", txtFirstName.Text);
10: parameters.Add("LastName", txtLastName.Text);
11: 12: WorkflowInstance instance = wr.CreateWorkflow(typeof(HelloWorldWorkflow.Workflow1), parameters);
13: instance.Start(); 14: }此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。