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


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
- 01-10關于ASP網頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現txt定位指定行完整實例
- 01-10WinForm實現仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現讀取注冊表監(jiān)控當前操作系統已
隨機閱讀
- 01-11ajax實現頁面的局部加載
- 01-10C#中split用法實例總結
- 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)境設置
- 08-05dedecms(織夢)副欄目數量限制代碼修改


