石磊
摘 要:文章主要介紹了利用C#多線程編程方法,滿足連鑄L2系統畫面對于實時特性的要求,提高畫面在處理多任務時的響應速度。為連鑄L2系統畫面開發提供一種新思想和技術方法。
關鍵詞:C#;多線程;連鑄L2系統畫面
Abstract: This paper mainly introduces the use of multi-threaded C# programming method, meet the requirement of continuous casting L2 system windows form requirements for the real-time performance, improve the response speed of the windows form at multitasking. To provide a new thought and method for continuous casting L2 system windows form development.
Keywords: C#; multi-threaded; continuous casting L2 system windows form
1 概述
所謂連鑄,即是將煉制成的鋼水冷卻鑄造成具有一定形狀的固體鋼物質的制造工藝。連鑄L2系統畫面就是對整個連鑄過程中采集到的設備信息,鋼水信息進行可視化方式展示,分析和設定,使操作人員能夠直觀地觀察數據,通過計算機的自動計算分析得出的結果對操作人員進行操作指導,從而科學方便的完成連鑄整個過程。
由于連鑄L2系統畫面要實時對采集到的數據進行更新展示且反應速度一般在s級,并且具有多任務特性(即畫面在完成一個耗時比較久的操作同時,還要進行其他的操作),所以在選擇編程語言時不僅要考慮該編程語言生成的程序的運行速度,還要考慮其界面制作的簡便性。除此之外,正常情況下都是兩類操作系統(Linux和Windows)使用在如今的工業控制應用程序中。然而Windows應用程序在客戶端上使用更普遍,在處理實時任務時性能優良,而且具有良好的圖形界面。故而畫面的操作系統選用Windows操作系統。在此基礎上,從技術的角度來看,無論是在多任務編程,編譯代碼的運行速度還是界面編程的簡便化等方面,C#語言都有其獨特的特點,這些特性使得C#語言非常適合在工業實時性要求比較高的控制系統畫面中使用。故用C#作為畫面的編程語言。
2 連鑄L2系統畫面功能分析
連鑄L2系統畫面主要具有以下三個功能:(1)定周期對L1采集到的數據進行收集并在畫面端展示出來以便操作人員查看(周期一般在10秒左右);(2)在收集到L1的某些特殊數據后,啟動后臺進程進行數據的邏輯處理和分析,然后在畫面上顯示,用于指導操作人員的生產(這些操作中有些是需要耗時很久但操作人員不急于查看結果的,但這些操作卻不能影響操作人員接下來進行畫面上其他的操作);(3)操作人員通過L2系統畫面完成與L3系統,L1系統的相互數據接收和發送。(操作人員有時會需要同時按多個按鈕完成多項操作,不能按完一個按鈕等待程序執行完成后再按其他按鈕)
從以上的功能分析可以看出,連鑄L2系統畫面在展示數據的同時,還要進行其他的操作,并且這些操作要具備并行處理能力,即在相當短的時間內進行多個操作。這時就要求畫面具有多任務處理的能力,為了達到這一要求,我們引進多線程技術。
3 多線程技術原理
在介紹多線程技術之前,我們先弄清楚幾個概念。(1)什么是進程?簡單的說,一個在操作系統中運行的程序,它就是一個進程,進程除了包括運行中的程序(代碼)本身外,還包括該程序所使用到的內存空間和操作系統內的系統資源。一個進程通常只有一個主線程。(2)什么是線程?線程就是程序中的一個執行流,對于每個線程來說,代碼都是共用的,也就是每個線程都可以執行同樣的代碼函數,只是線程與線程之間使用的寄存器(棧指針、程序計數器等)不同。在弄清楚這兩個概念之后,多線程技術也就呼之欲出了,多線程技術就是指在程序中創建多個執行不同任務的線程,并使它們能并行執行,以達到程序具備在同一個時間周期內進行多任務處理能力的技術。
C#多線程技術:
C#是在Windows操作系統上運行的程序語言,C#多線程技術,顧名思義就是用C#這種程序語言去實現多線程技術。為此微軟為了程序員能方便自如地運用多線程技術開發軟件,將多線程的相關底層封裝在了名叫System.Threading的命名空間中,所有線程通過CLI來進行統一管理。這樣做為程序的開發人員節省了寶貴的開發時間和精力,不用去編寫底層的控制管理代碼,而只要完成程序邏輯部分代碼就可以了。C#多線程技術提倡兩種主要的多線程開發方法,本文將使用其中的方法,演示C#多線程技術的開發方式。
4 C#多線程技術的應用
在寶鋼二煉鋼5,6號連鑄機L2計算機系統改造項目的畫面中,主要面臨兩個問題。(1)畫面自動刷新數據,滿足操作工實時監控連鑄L1上傳給L2的數據信息功能;(2)操作工對畫面操作后,所有數據的處理,在后臺完成,不影響畫面的響應,使操作工能接著進行其他的畫面操作。項目中已經通過使用C#多線程技術解決了以上兩個問題,下面將介紹如何使用該技術。(本文將附部分項目代碼)。
4.1 C#時間控件Timer
Timer控件是C#編程語言中一個典型的多線程應用控件。該控件是定周期的,并且具有跨線程調用特性。完全可以滿足該項目畫面中關于定周期更新展示數據的要求。該控件的使用方法如下:
從實例中可以看出,該控件的使用方法非常簡便,并且是微軟自帶的控件,封裝使用效果非常好,無BUG。不但減輕了程序開發人員的開發負擔,還使得程序變得簡便易讀。
4.2 自定義多線程
自定義多線程,顧名思義就是自己定義多個線程,每個線程完成某一項子任務,使子任務具備并行運行的可能。該方法的使用主要解決畫面在執行多個子任務而使得畫面的響應速度受到影響的問題。比如說,在該項目中點擊完命令要求,實績發送等多個按鈕后,還要進行其他畫面操作。這時,不用多線程會使得后臺在處理這些畫面要求的時候影響畫面本身,操作人員無法接著進行其他的畫面修改更新等操作而是要等到后臺處理完畢后才能處理其他操作,而使用多線程技術則可以在后臺處理的同時,畫面進行其他操作。自定義多線程使用方法如下:
該方法是C#多線程技術應用的精髓所在,該方法的使用靈活,簡便,可以很好的滿足操作人員對連鑄L2畫面進行多任務處理的各種要求,并同時提高畫面的響應速度,更好的保證操作人員對連鑄生產的實時控制。
5 結束語
從多線程應用程序的運行原理來看,多線程應用程序被分為幾個能同時執行的子線程后,能夠在同一個時間周期內完成各種各樣的任務。有效解決了在單線程應用程序中多任務會產生任務阻塞而無法同時完成多個任務的問題。同時,由于多線程具有并發處理能力,使應用程序的快速響應特性得以增強。
從多個連鑄項目L2系統畫面使用C#多線程技術的效果上來看,多線程技術的使用滿足了連鑄L2系統對于畫面快速響應特性和實時特性的要求,并且使用該技術的系統運行穩定,從未出現問題。在已經實施的項目中獲得了用戶的一致好評,尤其是下列幾個方面在工業控制行業二級系統畫面中都具有一定的參考價值。
(1)針對具有多任務特性的工業控制系統畫面來說,將多線程技術應用于其中是一個不錯的選擇。
(2)用戶界面可以做得更加人性化,比如用戶點擊了某一個按鈕去執行某一項任務,這時可以彈出一個任務進度條來顯示任務完成的進度。
(3)從單純的技術角度來看,可視化的C#語言具有清爽,易編程等特點。
參考文獻
[1]孫永強,等.Visual C#.NET入門與提高[M].北京:清華大學出版社,2002.
[2]特羅爾森(Andrew,troelsen).C#與.NET3.5高級程序設計(第4版)[M].人民郵電出版社,2009.
[3]蔣慎言.連鑄及爐外精煉自動化技術[M].冶金工業出版社,2006.