WEB开发网
开发学院软件开发C语言 学WF系列(五)——工作流模拟猜数游戏 阅读

学WF系列(五)——工作流模拟猜数游戏

 2010-10-01 08:24:35 来源:WEB开发网   
核心提示: 完整代码示例如下:Workflow1.cspublicsealedpartialclassWorkflow1:SequentialWorkflowActivity{privateintinput;privateintresult;privateintcount;publicintCount{ge

完整代码示例如下:

Workflow1.cs

public sealed partial class Workflow1 : SequentialWorkflowActivity
{
  private int input;
  private int result;
  private int count;

  public int Count
  {
    get { return count; }
  }


  public int Result
  {
    set { result = value; }
  }

  public Workflow1()
  {
    InitializeComponent();
  }

  private void CodeActivity1_ExcuteCode(object sender, EventArgs e)
  {
    Console.WriteLine("请输入你要判断的数:");
    string s = Console.ReadLine();
    input = Convert.ToInt32(s);
    count++;
  }

  private void codeActivity2_ExecuteCode(object sender, EventArgs e)
  {
    Console.WriteLine("成功");
  }
}

Program.cs:

class Program
{
  static void Main(string[] args)
  {
    using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
    {
      AutoResetEvent waitHandle = new AutoResetEvent(false);
      object count = null;
      workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {
        count = e.OutputParameters["Count"];
        waitHandle.Set();
      };
      workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
      {
        Console.WriteLine(e.Exception.Message);
        waitHandle.Set();
      };
      Random r = new Random();
      int result = r.Next(10);
      Dictionary<string, object> dic = new Dictionary<string, object>();
      dic.Add("Result", result);

      WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowConsoleApplication5.Workflow1),dic);
      instance.Start();

      waitHandle.WaitOne();
      Console.WriteLine("您猜了" + count.ToString() + "次");
    }
  }
}

学WF系列(五)——工作流模拟猜数游戏

4.  提示

在这里,很多朋友都问我,我们用工作流究竟干吗?工作流究竟有什么用?之前的这些例子,用代码不也一样写得很好么?

因此,我觉得有必要再次重申工作流的意义和用途。

工作流为我们提供的一个宏观的框架,我们用工作流搭建出来的应该是一个复杂的业务流程,或者他们事件驱动,或者他们顺序执行。

他们的过程一般不会像登陆,猜数这样简单,而需要持久化,或者持久化到磁盘文件中,或者持久到数据库中。这些我们在后文中都会提及到。

我们在这里只要记得,工作流为我们解决的是一个宏观的时事件过程。

5. 总结

在本文中,我们主要介绍了While活动的用法,以及工作流与宿主程序之间的参数传递问题。

还是希望大家把代码自己敲一遍,加深记忆。

系列文章:

学WF系列(一)——Hello world开始

学WF系列(二)——工作流与Visual Studio

学WF系列(三)

学WF系列(四)——工作流模拟登陆

上一页  1 2 

Tags:WF 系列 工作流

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接