首先,上個多線程的概念。通過單獨的線程來執行某個任務,一個多線程程式可以執行多個任務,而且這些線程都是并行執行,同時執行多個線程的能力稱為多線程。
根據多線程的概念,我們知道,多線程可以提高程式的運作效率,加快運作的速度。比較典型的應用就是我們經常使用的下載下傳工具,就用到了多線程技術。
下面上一段代碼,看一下C#中如何實作多線程。
我們在控制台項目中,鍵入如下代碼:
Main函數中定義了3個線程的線程數組,然後循環調用。
這是一個普通的方法,用于測試線程的執行情況。
我們發現在ActionMethod方法中,lock(this)這一行被注釋掉了。
我們看一下運作狀況。
這是沒加lock(this)的運作情況 這是加了lock(this)的運作情況

這就引出了一個線程同步的概念。也就是說,我們在程式中想辦法,對多個線程的執行進行協調,使線程按照順序來執行。線程同步的意思并不是說多個線程保持同樣的次序輸出,而是說單獨的線程執行不被其他線程所幹擾,要執行下一個線程必須等待該線程結束才能進行。這樣才能保證多個線程輸出的一緻和同步。
說到這裡,我想有人想問,多個線程同時執行,我怎麼去對他們執行的優先級進行控制呢?比如,我想讓線程1的活先幹完,然後讓線程2的活幹完,最後是線程3的活幹完。
這是很自然的需求,C#很友善的進行了實作。
還是利用上面的代碼,線上程執行之前,我們加下面這3行代碼。
最後,我們将做一個累加器,用多線程來實作。
首先我們畫一個winform界面
然後我們再開始計算按鈕下面輸入如下代碼(這裡的控件名沒改,讀者自行修改):
Add方法是一個核心方法,将需要計算的範圍按照線程數進行分割,這樣讓每個線程獨自的完成自己的任務,而不是一個線程從頭跑到尾。OK,我們檢視一下運作效果圖:
這裡可以看到每個線程的運作情況和執行情況。