在寫多線程程序的時候,往往委托調用的方法不能傳遞參數,但是我就遇到了一個問題,線程委托的方法必須要傳遞參數,因為我有多個線程,而多個線程所注冊的方法體基本上都是一樣的,只有幾個變量的值不一樣,我也不想寫什麼 方法1(){……} ; 方法2(){……} 方法3(){……}等等,因為我的線程有可能是100個,或者是更多,所以我放棄了這種方法,想用一個方法,然後向裡面扔參數,去用循環搞定它,這樣才能表現出程序的精簡型,和優秀程序員作風,於是我上網查閱了些資料,並且和同事交流了一下,得出一個解決方案:
首先~線程調用的類裡定義個變量,然後再線程委托的方法體內也定義一個變量,當然這個變量就是你千方百計想要穿進去的,然後方法體內的第一句話就是 "方法體變量 = 類的變量" ; 用一個循環去啟動這些線程,而且這些線程同樣都去注冊這個方法體
關鍵代碼部分:
for (int i = 0; i < _MAXSERVER; i++)
{
類變量= (ServerBean)serverState[i];//類變量賦值
Thread th = new Thread(new ThreadStart(ScanPort));//ScanPort是我的一個方法體
th.Start();
Thread.Sleep(10);//這裡睡上10秒是為了讓啟動的這個線程有足夠的時間去執行它的第一句
賦值語句
}
好了,大體思路就是這樣~~有不明白的或遇到同樣問題的可以討論討論