zoukankan      html  css  js  c++  java
  • Beginning WF4读书笔计 - 第一章 02添加程序元素

        在WF4.0中提供了一系列如“If”、“Whiel”、“Assign”和“Sequence”等程序要素,(注:这些要素与我们在C#语言中的关键字is, while,=,List类似)为了说明这些要素是如何工作的,我们会设计一个“祝福”程序,类似老式的“座钟”报时一样,发出“铛”的声响。

        首先,让我们的解决方案中打开“Workflow1.asmx”文件。

    使用变量

        在WF4.0中但凡要使用到的变量,都必须事先定义(预定义)。在本例中我们将定义两个变量,为别为标示需要发声的次数“numberBells”和记录已经响过次数的“counter”。

        首先,选中主活动“Sequence”,点击左下角的“变量”,可现如下页面:(注:详细过程可参阅《Beginning WF4读书笔计 第一章 01创建一个简单的工作流》)

     

    (图1-7)

        然后,点击“创建变量”,改名为“counter”,并分别填写类型、范围及默认值如下图:

     

    (图1-8)

        同时查看其属性页面如下:

     

    (图1-9)

        接下来,以同样的方法创建变量“numberBells”,并设置类型为“Int32”,范围为“Sequence”;这时从属性“Default”的右侧的按钮来设置“VB表达式”,如下图:

     

    (图1-10)

    说明:VB表达式,他大爷!看来得找本VB的书来翻一翻了。不过我试了一个DateTime.Now.Hour,结果一样,没细究。

        表达式“DateAndTime.Now.Hour”表示以小时来表示需要响的次数。现在变量总体示图如下:

     

    (图1-11)

    IF

     

        由于DateAndTime返回的时间是以24小时制,所以比如14点,其实应该只响两次,而非14次。如果是在程序代码中,我们可以简单的采用如下代码进行控制。

        f (numberBells > 12)

        {

           numberBells -= 12;

        }

        但在,在WF4.0中我们就需要使用“If”和“Assign”两个活动来协作完成这个功能。步骤如下:

        首先,我们在“WriteLine”活动的下面拖放一个“If”活动,

     

    (图1-12)

     [如果活动存在问题,那么在期右上角将会出现一个“!”号,把鼠标放置其上,可显示且体的问题说明]

        接下来,将其名称改为“Adjust for PM”。同时,把“Condition”设置为“numberBells > 12

    Assign

        “Assign”活动,可实现对一个变量或参数进行赋值

     

    (图1-13)

        在本例中,从工具栏中拖曳一个“Assign”到上述的“IF”活动的的“THEN”中,并在其属性页面中设置“TO”和“Value”分别为“numberBells”和“numberBells-12”。如图:

     

    (图1-14)

        其实很多“活动”属于“复合活动”(compound activities),而这类活动是允许包含其它活动的,If就是其中的一个!

    While

     

        现在我们需要添加一个“While”活动来发出声响了(注:在本例中只是输出文本)。我们从工具箱中拖一个“While”活动到“Adjust for PM”之下。同时命名为“Sound Bells”。

     

    (图1-15)

        在“While”活动中,如果“condition”的条件为“true”,时其“Body”中的活动就会执行,真到“condition”为“false”为终止。

    说明:DoWhile就不细说了,知道C#中while与do{}while区别的就能了解这个。

        在本例中,把“Condition”设置为“counter <= numberBells”,同时拖一个“Sequence”到其“Body”中,并更名为“Sound Bell”。

     

    (图1-16)

    Sequence

        接下来,我们将使用3个活动来完成“Sound Bell”。在这个示例中,并不会真正的发声,取而代之的是输出一段表示响过次数的文本。

        所以首先拖一个“WriteLine”到“Sound Bell”活动中,并设置期Text属性为“counter.ToString()”。

        接下来,在“WriteLine”活动之下再添加一个“Assign”活动,并设置其“TO”和“Value”属性分别为“counter”、“counter + 1”。即表示每输出一次,已响过的声音加1。

    Delay

        最后,拖一个“Delay”活动到“Assign”活动之下。“Delay”活动会暂停工作流一段时间(指定的时间)。“Delay”活动有一个参数“Duration”用来设置需要暂停的时间长。我们可以设置为:TimeSpan.FromSeconds(1)

     

    (图1-17)

    其它修饰

       

        我们可以通过点击活动右上角的“箭头”来收起和展开活动细节,如图

     

    (图1-18)

        接下来我们将在“Sound Bells”活动之下,新增一个“WriteLine”活动来显示报时的时间(注:以体现Delay的效果)。并设置期名称为“Display Time”把其Text属性设置为如下表达式:

        "The time is: " + DateAndTime.Now.ToString()

     

        再添加一个“If”活动来输出问候语,并把这个活动命名为“Greeting”,并把其“Condition”设置为如下:

        DateAndTime.Now.Hour >= 18

        同时分别在其“THEN”和“ELSE”中各拖一个“WriteLine”活动,并把其Text分别设置为:“Good Evening”和“Good Day”。

     

    (图1-19)

    运行程序(F5)

     

  • 相关阅读:
    【Win 10 应用开发】在后台播放视频
    【Win 10 应用开发】UI Composition 札记(八):用 XamlLight 制作灯光效果
    【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画
    【Win 10 应用开发】UI Composition 札记(六):动画
    Redis中的Scan命令的使用
    MySQL8.0新特性
    IP白名单的实现(PHP)
    mysql分组后获取每个组排序后的第一条数据(整行)
    PHP 之sha256 sha512封装
    Mysql数据库中CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP区别
  • 原文地址:https://www.cnblogs.com/showjan/p/2997471.html
Copyright © 2011-2022 走看看