日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

工作流编程循序渐进(3:While活动)

發(fā)布時間:2025/4/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工作流编程循序渐进(3:While活动) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

工作流編程循序漸進(3:While活動)


作者? 朱先忠

一、引言

本文中,我們來學習另一個簡單活動--While活動While活動將會持續(xù)循環(huán)的執(zhí)行,直至指定判斷為假。

下面,我們來構建一個簡單的示例。本示例的目的是,想主要使用While活動實現(xiàn)顯示一個九九乘法表。

二、創(chuàng)建控制臺順序工作流示例程序框架


請遵循如下步驟創(chuàng)建一個控制臺順序工作流示例程序:
1. 啟動VS2008,單擊菜單”文件“|”新建“|”項目“,創(chuàng)建一個名字為WhileActivity的控制臺順序工作流示例程序。
2.之后,系統(tǒng)自動打開工作流設計器界面。
3. 從工具箱中拖動While活動到圖中右側的漢字提示處,得到如圖所示的情形。

4. 因為是在控制臺中顯示一個九九乘法表,所以,一定要使用一個二重循環(huán)來實現(xiàn)這一目的。也就是說,我們要使用一個嵌套的While活動。另一方面,我們知 道:外層循環(huán)與內(nèi)層循環(huán)變量是存在聯(lián)系的,即在每一次內(nèi)循環(huán)執(zhí)行完成后,要重新進行某種初始化操作。因此,直接在一個While活動中嵌入一個While 活動是無法實現(xiàn)既定功能的。

另外需要注意的是,While活動僅允許包括一個子活動

但是,還是有解決辦法的,我們可以在While活動中嵌入一個復合活動,即一個允許其中繼續(xù)包含(可能有多個)子活動的活動,例如并行執(zhí)行活動(Parallel),串行執(zhí)行活動(Sequence),等等。

5.? 為此,我們最終得到如下的工作流圖:



對于打印一個乘法九九表來說,通常我們可以使用如下一個函數(shù)實現(xiàn):
static void MultiplyTable()
{
??? int i = 1;
??? int j = 1;

??? for (i = 1; i <= 9; i++)
??? {
??????? for (j = 1; j <= i; j++)
??????? {
??????????? if (i == j)
??????????? {
??????????????? Console.Write("{0} * {1}={2} ", i, j, i * j);
??????????????? Console.WriteLine("");
??????????? }
??????????? else
??????????????? Console.Write("{0} * {1}={2} ", i, j, i * j);
??????? }
??? }

}


于是,我們會得到如下圖所示的打印效果:

下面,我們也想通過工作流操作實現(xiàn)上圖打印效果。現(xiàn)在來討論活動有關屬性設置及編碼問題。

三、活動有關屬性設置及編碼

1. 在本例中,我們要使用規(guī)則條件表達內(nèi)外層循環(huán)的規(guī)則條件。為此,先要定義兩個循環(huán)變量(以工作流Workflow1)的私有字段的形式存在,如下:
??????? //創(chuàng)建兩個控制內(nèi)外層循環(huán)的變量
??????? private int i = 0;
??????? private int j = 1;

2. 單擊外、內(nèi)層兩個循環(huán)活動whileActivity1和whileActivity2,分別使用屬性窗口設置循環(huán)的規(guī)則條件。以外層循環(huán)為例,首先需要選擇Condition為“聲明性規(guī)則條件”。然后,在下面的規(guī)則命名中輸入名稱c1。典型情況(推薦)下,我們單擊規(guī)則名稱c1右邊的“...”省略號進入到規(guī)則表達式定義對話框,如圖所示:
然后,你可以單擊“新建”鏈接創(chuàng)建規(guī)則表達式(以后也可以使用“編輯”鏈接再修改之)。表達式創(chuàng)建窗口如下所示:

[注意]上面的表達式后面不允許有分號“;”,否則會出現(xiàn)錯誤提示。

3.同樣方式創(chuàng)建內(nèi)循環(huán)活動whileActivity2的規(guī)則條件為:

this.j <= this.i


4. 根據(jù)前面的算法分析,我們要分別創(chuàng)建內(nèi)外循環(huán)活動的
??????? private void codeActivity1_ExecuteCode(object sender, EventArgs e)
??????? {
??????????? j = 1;
??????????? i++;
??????? }

??????? private void codeActivity2_ExecuteCode(object sender, EventArgs e)
??????? {
??????????? if (i == j)
??????????? {
??????????????? Console.Write("{0} * {1}={2} ", i, j, i * j);
??????????????? Console.WriteLine("");
??????????? }
??????????? else
??????????????? Console.Write("{0} * {1}={2} ", i, j, i * j);
??????????? j++;
??????? }


5. 下面是完整的工作流類定義代碼:
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;

namespace WhileActiviity
{
??? public sealed partial class Workflow1 : SequentialWorkflowActivity
??? {
??????? //創(chuàng)建兩個控制內(nèi)外層循環(huán)的變量
??????? private int i = 0;
??????? private int j = 1;


??????? public Workflow1()
??????? {
??????????? InitializeComponent();
??????? }

??????? private void codeActivity1_ExecuteCode(object sender, EventArgs e)
??????? {
??????????? j = 1;
??????????? i++;
??????? }

??????? private void codeActivity2_ExecuteCode(object sender, EventArgs e)
??????? {
??????????? if (i == j)
??????????? {
??????????????? Console.Write("{0} * {1}={2} ", i, j, i * j);
??????????????? Console.WriteLine("");
??????????? }
??????????? else
??????????????? Console.Write("{0} * {1}={2} ", i, j, i * j);
??????????? j++;
??????? }

??????? private void codeActivity3_ExecuteCode(object sender, EventArgs e)
??????? {
??????????? Console.Read();
??????? }

??? }

}

自不必贅述了吧。

四、運行實例

按F5運行控制臺程序,一般順利的話,將得到如下圖所示運行時快照。




轉(zhuǎn)載于:https://blog.51cto.com/zhuxianzhong/203304

總結

以上是生活随笔為你收集整理的工作流编程循序渐进(3:While活动)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。