## 無引數
我們都知道使用多執行緒最簡單的方式是下面這樣:
**void
somemethod()
void
createthread()
##乙個引數
但是如果要是想給somemethod方法傳入引數的話,發現這種方法不好用了
因為thread類並不支援這樣
但是為了解決這個問題,類庫中提供了乙個支援的**
使用它可以支援傳入乙個引數.注意,是僅僅乙個!!
使用以下方法實現
但是假如有多個引數就遇到麻煩了,上述方法只允許乙個引數.
**void
somemethod(
object
arg)
void
createthread()
##多個引數
我們有兩種方法:
1. 新建乙個內部類,包裝所有的引數,然後傳入這個內部類的乙個例項,如下:
**void
somemethod(
object
myargs)
void
createthread()
private
class
myargs
set}
myargs(
string
hellostring)}
2. 呼叫方法需要使用的引數存在此方法的類中,**示例如下:
**public
class
mythreadhelper
set}
//包含引數的建構函式
public
mythreadhelper(
string
hellostring)
//要丟給執行緒執行的方法,本處無返回型別就是為了能讓threadstart來呼叫
public
void
somemethod()
}void
createthread()
3. 直接在threadstart建構函式中新增**,這種方法不用考慮引數的個數 (感謝 qianlifeng)
**如下:
threadstart starter
=delegate
;new
thread(starter).start();
##結束
至此,多執行緒傳不同個數(零到多個)引數都有了解決辦法.
要傳引數,也可以這樣用:
threadstart ts = new threadstart(delegate );
關於多執行緒傳參問題
無引數 我們都知道使用多執行緒最簡單的方式是下面這樣 void somemethod void createthread 乙個引數 但是如果要是想給somemethod方法傳入引數的話,發現這種方法不好用了 因為thread類並不支援這樣 但是為了解決這個問題,類庫中提供了乙個支援的 使用它可以支援...
關於多執行緒傳參問題
無引數 我們都知道使用多執行緒最簡單的方式是下面這樣 void somemethod void createthread 乙個引數 但是如果要是想給somemethod方法傳入引數的話,發現這種方法不好用了 因為thread類並不支援這樣 但是為了解決這個問題,類庫中提供了乙個支援的 使用它可以支援...
多執行緒傳參
1.要避免的陷阱 1 用detach 時,如果主線程先結束,變數就會被 所以用detach 的話,不推薦用引用,同時絕對不能用指標。include include using namespace std void myprint const int i,char pmybuf intmain 2 在...