執行緒的引數傳遞

2022-07-31 12:42:16 字數 1659 閱讀 7365

執行緒大家都聽說過,也或多或少的看到過或使用過。但對於執行緒中的引數傳遞可能會比較陌生,今天我在這就跟大家分享下執行緒的傳遞方法。

在分享執行緒的引數傳遞方法之前我們先來看看不帶參的執行緒:

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的話,就會發生...