工作流程式設計循序漸進(3 While活動)

2021-09-22 04:44:02 字數 2811 閱讀 8581

作者  朱先忠

下面,我們來構建乙個簡單的示例。本示例的目的是,想主要使用while活動實現顯示乙個九九乘法表。

請遵循如下步驟建立乙個控制台順序工作流示例程式:

1. 啟動vs2008,單擊選單」檔案「|」新建「|」專案「,建立乙個名字為

whileactivity

的控制台順序工作流示例程式。

2.之後,系統自動開啟工作流設計器介面。

3. 從工具箱中拖動

while

活動到圖中右側的漢字提示處,得到如圖所示的情形。

4. 因為是在控制台中顯示乙個九九乘法表,所以,一定要使用乙個二重迴圈來實現這一目的。也就是說,我們要使用乙個巢狀的while活動。另一方面,我們知 道:外層迴圈與內層迴圈變數是存在聯絡的,即在每一次內迴圈執行完成後,要重新進行某種初始化操作。因此,直接在乙個while活動中嵌入乙個while 活動是無法實現既定功能的。

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

但是,還是有解決辦法的,我們可以在while活動中嵌入乙個復合活動,即乙個允許其中繼續包含(可能有多個)子活動的活動,例如並行執行活動(parallel),序列執行活動(sequence),等等。

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

對於列印乙個乘法九九表來說,通常我們可以使用如下乙個函式實現:

static void multiplytable()

* = ", i, j, i * j);

console.writeline("");

}else

console.write(" * = ", i, j, i * j);}}

} 於是,我們會得到如下圖所示的列印效果:

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

1. 在本例中,我們要使用規則條件表達內外層迴圈的規則條件。為此,先要定義兩個迴圈變數(以工作流workflow1)的私有欄位的形式存在,如下:

//建立兩個控制內外層迴圈的變數

private int i = 0;

private int j = 1;

2. 單擊外、內層兩個迴圈活動whileactivity1和whileactivity2,分別使用屬性視窗設定

迴圈的規則條件

。以外層迴圈為例,首先需要選擇condition為「宣告性

規則條件

」。然後,在下面的規則命名中輸入名稱c1。典型情況(推薦)下,我們單擊

規則名稱c1右邊的「...」省略號進入到規則表示式定義對話方塊,如圖所示:

然後,你可以單擊「新建」鏈結建立規則表示式(以後也可以使用「編輯」鏈結再修改之)。表示式建立視窗如下所示:

[注意]上面的表示式後面不允許有分號「;」,否則會出現錯誤提示。

3.同樣方式建立

內迴圈活動whileactivity2

的規則條件為:

this.j <= this.i

4. 根據前面的演算法分析,我們要分別建立

內外迴圈活動的

private void codeactivity1_executecode(object sender, eventargs e)

private void codeactivity2_executecode(object sender, eventargs e)

* = ", i, j, i * j);

console.writeline("");

}else

console.write(" * = ", 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

private void codeactivity1_executecode(object sender, eventargs e)

private void codeactivity2_executecode(object sender, eventargs e)

* = ", i, j, i * j);

console.writeline("");

}else

console.write(" * = ", i, j, i * j);

j++;

}private void codeactivity3_executecode(object sender, eventargs e)}}

自不必贅述了吧。

按f5執行控制台程式,一般順利的話,將得到如下圖所示執行時快照。

工作流程式設計循序漸進(3 While活動)

作者 朱先忠 下面,我們來構建乙個簡單的示例。本示例的目的是,想主要使用while活動實現顯示乙個九九乘法表。請遵循如下步驟建立乙個控制台順序工作流示例程式 1.啟動vs2008,單擊選單 檔案 新建 專案 建立乙個名字為whileactivity 的控制台順序工作流示例程式。2.之後,系統自動開啟...

循序漸進學程式設計

軟體開發者是乙個日新月異的領域 it 中的大師,今天的程式設計方式與明天的程式設計或許截然不同,技術在不斷地革新,新語言 新平台的如雨後春筍般出現 更好的解決方案的冒出,因此我們需要跟得上節奏,我們沒有選擇,唯有努力提高自己。下面的幾點建議或許能幫助你成為乙個優秀地開發者。你是否聽說過 kaizen...

IO流循序漸進四

ofstream out d fstream out ofstream out d fstream out fstream in ofstream out d fstream ate ofstream out d fstream trunc 刪除文字後新增 ofstream out d ios at...