C#多線程變成傳遞參數解決方案

來源:互聯網
上載者:User

在寫多線程程式的時候,往往委託調用的方法不能傳遞參數,但是我就遇到了一個問題,線程委託的方法必須要傳遞參數,因為我有多個線程,而多個線程所註冊的方法體基本上都是一樣的,只有幾個變數的值不一樣,我也不想寫什麼 方法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秒是為了讓啟動的這個線程有足夠的時間去執行它的第一句
指派陳述式
}

好了,大體思路就是這樣~~有不明白的或遇到同樣問題的可以討論討論

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.