• wf(六)


    前面我们都是通过WorkflowInvoker这个类来调用方法的,这种方式是很简单的,因为这是同步的而且同样的调用者调用工作流使用的线程是一样的。

    另外一个调用工作流的方法是通过工作流应用程序类(WorkflowApplication class),这种方式可以运行工作流在一个单独的线程上运行,并且支持被调用的委托

    (当这工作流完成,死锁,或者有一个未处理的异常的时候),应用程序类可以让你创建多线程服务或者客户端程序更简单。

    下面我们将用这种方式来调用活动,并获得调用活动的线程id:


    写一个单元测试,证明工作流的线程id作为返回值返回了:

    1. 打开SayHelloFixture.cs 增加引用 using System.Threading和using System.Diagnostics;

    2.增加单元测试,如下图:

    3运行单元测试会报错,因为我们还没有增加工作流线程的输出参数。


    将工作流线程做为输出参数:

    打开SayHello.xaml增加输出参数名称为WorkflowThread类型为int32,如图:

    目前我们只有一个activity作为Greeting输出,所以我们还需要增加一个activity。

    1. 剪切我们之前做的Assign活动;拖拽一个Sequence到设计界面;然后粘贴我们剪切的Assign活动;

    2导入命名空间System.Threading,如图:

    这个引用其实也不是一定要的,但是为了对Thread有完全的控制权,所以还是添加了。

    3拖拽一个Assign到我们事前做的Assign下面,设置如下图:

    现在运行测试,测试将通过。如果你想看线程id的值,你可以选择调试选择的单元测试,你会发现单元测试线程id和工作流调用的线程id是一样的,

    因为WorkflowInvoker调用工作流和线程是同步的。


    测试虽然通过了但是还存在一个问题,测试虽然证明了工作流线程返回是非零整数,但是没有证明工作流实际处理的线程id。

    我们要做的就是重写单元测试,如下图:

    运行单元测试,通过这可以验证上述证明。

    到此demo6结束

  • 相关阅读:
    基于朴素贝叶斯的内容推荐算法
    Android Message和obtainMessage的差别
    hevc 的相关文章的链接
    创建不被杀死的service
    TQ2440 学习笔记—— 2、Win7PC 与虚拟机Ubuntu互通 ping 的网络设置
    国防科大校赛I题: Prime Summation
    VC 中怎样改变窗体背景色
    小心使用IHttpHandler下的IsReusable属性
    hdu1702(ACboy needs your help again!) 在杭电又遇坑了
    deque C++实现
  • 原文地址:https://www.cnblogs.com/HKKD/p/5102765.html
Copyright © 2020-2023  润新知