在我們做項目的時候會經常用到線程,但線程也不是萬能的,用線程需要注意的東西也很多,自己做了一下總結
這次總結主要說三個部分
<a href="#001">1 線程之委托方法</a>
<a href="#002">2 給線程傳參</a>
<a href="#003">3 三種方法控制線程同步</a>
我們先看一下小例子:
在方法裡我們定義了一個 ThreadStart _ts = new ThreadStart(MyThread);
打開msdn 檢視發現這是一個委托 ,表示在 Thread 上執行的方法。
那就是說也可以這麼寫
Thread類有一個帶參數的委托類型的重載形式
有時個我們有好幾個參數隻傳一個參資料就不能滿足了
我們可以直接用委托要多個參數
也可以自己寫一個中間類
三種方法lock 和Monitor 還有MethodImpl都會讓線程同步下面我們一個一個的來說
多個線程通路同一個方法時有可能會出現一個線程修改了一個參數别一個線程進入也修改了這個參數就會發生
錯誤
結果是
根據機器的配制不同可能結果也不同
在這個方法裡我們是想讓第一個線程減10結果應該 是145
第二個線程進去後在145基礎上再減結果應該是90
現在說三種方法lock 和Monitor 還有MethodImpl 都會讓線程同步,隻有一個線程執行完後另一個線程才能通路
我們一個一個來說吧
先看一下lock
這樣結果就對了吧
還有其它的兩種形式
用MethodImpl 要加上
Monitor
結果都是正确的