執行緒大家都聽說過,也或多或少的看到過或使用過。但對於執行緒中的引數傳遞可能會比較陌生,今天我在這就跟大家分享下執行緒的傳遞方法。
在分享執行緒的引數傳遞方法之前我們先來看看不帶參的執行緒:
using system.threading;(在使用執行緒前別忘記了加上命名空間)
public class threadclass
public static void getthread()
thread thread=new thread(t);//thread thread=new thread(new threadstart(t));//兩句效果相同
thread.start();
public string t()
return 0;
上面的**是在threadclass類中以乙個getthread()函式去使用執行緒;不知道大家有沒有留意到類中函式的第一行的注釋,在注釋裡面有個threadstart;
接下來我們來看看帶引數傳遞的執行緒:
using system.threading;(在使用執行緒前別忘記了加上命名空間)
public class threadclass
public static void getthread()
thread thread=new thread(new parameterizedthreadstart(t));
thread.start(10);
public string t(object i)
string str=i.tostring();
return str;
我們來比較下和不帶引數的執行緒使用有什麼區別:
1.不帶參的執行緒是使用threadstart來定義的,而帶引數傳遞的執行緒是用parameterizedthreadstart定義;
2.執行緒所呼叫的方法乙個沒有帶任何引數另乙個帶有乙個object引數;
3.在啟用執行緒(start())時,其中帶引數傳遞的執行緒是有引數的,而不帶參的就沒有。
從這些區別中我們能來做個總結,在使用不帶參的執行緒時用threadstart來定義執行緒,帶引數傳遞的執行緒是用parameterizedthreadstart定義;執行緒帶參傳遞時是用start來傳遞。
現在讓我們一起來了解下parameterizdethreadstart,在使用parameterizedthreadstart定義的執行緒中,執行緒可以接受乙個object引數,但必須中有乙個在多就不行;所以在帶引數的執行緒中呼叫的方法只有乙個object引數。
using system.threading;(在使用執行緒前別忘記了加上命名空間)
public class threadclass
public static void getthread()
thread thread=new thread(new parameterizedthreadstart(t));
thread.start(10);
public string t(object i)
string str=i.tostring();
string b="你好";
string s=t2(str,b);
return s;
public string t2(string i,string j)
string s=i+","+j+"";
return s;
給執行緒傳遞引數
執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn 我們如果定義不帶引數的執行緒,可以用threadstart 帶乙個引數的用parameterizedthreadstart。帶多個引數...
執行緒中傳遞引數
執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn thread threadstart 初始化 thread 類的新例項。由 net compact framework 支援。thre...
多執行緒 引數傳遞
4,unique ptr作為引數傳遞,必須使用move函式 5,函式的指標作為引數傳遞 引用傳遞,指標傳遞的注意事項 因為執行緒2裡使用的是執行緒1的變數a,所以如果執行緒1比執行緒2提前結束了,結束的同時就會釋放變數a的記憶體空間,可是這時執行緒2還沒結束,再去訪問執行緒1中的變數a的話,就會發生...