C#向線程中傳遞多個參數(shù)的解決方法(兩種)
問題:
對于多線程編程,很多時候往往需要向線程中傳遞多個參數(shù),而C#中的線程只接收1個object類型的參數(shù)(如下):
Thread t = new Thread(new ParameterizedThreadStart(newthread)); t.start(參數(shù)); void newthread(object) { ............. }
而現(xiàn)在需要往線程中傳遞多個參數(shù),比如method方法想用單獨(dú)的線程來跑
void method(int begin,int end) { .................. }
解決辦法1:新建一個跑方法的類
class myclass { private int begin; public int begin { set{this.begin=value;} } private int end; public int end { set{this.end=value;} } public run() { method(begin,end); } private method(int begin,int end) { ............... } }
然后新建一個該類實(shí)例,賦值之后就可以跑了,代碼如下;
myclass c = new myclass(); c.begin=100; c.end=10000; Thread t = new Thread(new Threadstart(c.run)) t.start();
2、解決方法2:將數(shù)組或集合實(shí)例作為參數(shù)傳入
目前正在做一個多線程的軟件,用到了這部分,感覺每次都要新建類,比較麻煩,查了網(wǎng)上主流都是解決方法1中的方法,后來自己琢磨出另一個方法,就是盡管新的線程只能傳1個參數(shù)進(jìn)去,但是我們可以傳一個集合或者數(shù)組類的參數(shù)進(jìn)去,這樣就可以解決一次向新線程中傳遞多個參數(shù)的問題了。
同樣,對于上面的method的方法,需要傳遞2個int類型的整數(shù),首先添加一個method方法的重載
void method(object o) { //此處對傳進(jìn)來的參數(shù)進(jìn)行處理 int[] p = (int[])o; //調(diào)用原來的method方法 method(p[0],p[1]); }
再將要傳遞的參數(shù)用數(shù)組或集合方式儲存起來
int para[]=new int[2]{100,10000};
最后新建線程進(jìn)行調(diào)用
THread t = new Thread(new ParameterizedThreadStart(method)) t.start(para);
這樣就可以達(dá)到將2個參數(shù)傳遞入線程的目的了。
傳遞的參數(shù)類型也可以用List<>或其他集合,傳遞進(jìn)去的這些參數(shù)的類型都是相同的,對于不同的類型,可以考慮采用List<object>或者object[] 的方式傳進(jìn)去,在重載的方法中再對參數(shù)進(jìn)行處理即可。
以上所述是小編給大家介紹的C#向線程中傳遞多個參數(shù)的解決方法(兩種) ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對我們網(wǎng)站的支持!
上一篇:快速解決owin返回json字符串多帶了雙引號"多了重string轉(zhuǎn)義字符串
欄 目:C#教程
下一篇:C#網(wǎng)絡(luò)爬蟲代碼分享 C#簡單的爬取工具
本文標(biāo)題:C#向線程中傳遞多個參數(shù)的解決方法(兩種)
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6331.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)多線程下載文件的方法
- 01-10C#實(shí)現(xiàn)Winform中打開網(wǎng)頁頁面的方法
- 01-10C#實(shí)現(xiàn)由四周向中心縮小的窗體退出特效
- 01-10C#實(shí)現(xiàn)多線程寫入同一個文件的方法
- 01-10Extjs4如何處理后臺json數(shù)據(jù)中日期和時間
- 01-10C#獲取進(jìn)程或線程相關(guān)信息的方法
- 01-10C#通過Semaphore類控制線程隊(duì)列的方法
- 01-10C#中DataGridView常用操作實(shí)例小結(jié)


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改