欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#向線程中傳遞多個(gè)參數(shù)的解決方法(兩種)

 更新時(shí)間:2016年07月27日 11:02:42   投稿:mrr  
這篇文章主要介紹了C#向線程中傳遞多個(gè)參數(shù)的解決方法(兩種)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

問(wèn)題:

對(duì)于多線程編程,很多時(shí)候往往需要向線程中傳遞多個(gè)參數(shù),而C#中的線程只接收1個(gè)object類(lèi)型的參數(shù)(如下):

Thread t = new Thread(new ParameterizedThreadStart(newthread));
t.start(參數(shù));
void newthread(object)
{
.............
}

而現(xiàn)在需要往線程中傳遞多個(gè)參數(shù),比如method方法想用單獨(dú)的線程來(lái)跑

void method(int begin,int end)
{
..................
}

解決辦法1:新建一個(gè)跑方法的類(lèi)

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)
{
...............
}
}

然后新建一個(gè)該類(lèi)實(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ù)傳入

目前正在做一個(gè)多線程的軟件,用到了這部分,感覺(jué)每次都要新建類(lèi),比較麻煩,查了網(wǎng)上主流都是解決方法1中的方法,后來(lái)自己琢磨出另一個(gè)方法,就是盡管新的線程只能傳1個(gè)參數(shù)進(jìn)去,但是我們可以傳一個(gè)集合或者數(shù)組類(lèi)的參數(shù)進(jìn)去,這樣就可以解決一次向新線程中傳遞多個(gè)參數(shù)的問(wèn)題了。

同樣,對(duì)于上面的method的方法,需要傳遞2個(gè)int類(lèi)型的整數(shù),首先添加一個(gè)method方法的重載

void method(object o)
{
//此處對(duì)傳進(jìn)來(lái)的參數(shù)進(jìn)行處理
int[] p = (int[])o;
//調(diào)用原來(lái)的method方法
method(p[0],p[1]);
}

再將要傳遞的參數(shù)用數(shù)組或集合方式儲(chǔ)存起來(lái)

int para[]=new int[2]{100,10000};

最后新建線程進(jìn)行調(diào)用

THread t = new Thread(new ParameterizedThreadStart(method))
t.start(para);

這樣就可以達(dá)到將2個(gè)參數(shù)傳遞入線程的目的了。

傳遞的參數(shù)類(lèi)型也可以用List<>或其他集合,傳遞進(jìn)去的這些參數(shù)的類(lèi)型都是相同的,對(duì)于不同的類(lèi)型,可以考慮采用List<object>或者object[] 的方式傳進(jìn)去,在重載的方法中再對(duì)參數(shù)進(jìn)行處理即可。

以上所述是小編給大家介紹的C#向線程中傳遞多個(gè)參數(shù)的解決方法(兩種) ,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論