新建乙個執行緒(無引數,無返回值)
thread th =
newthread(printname);
th.isbackground =
true; //後台執行
th.start();
public
void printname() // 函式
也可使用這樣的方法:
thread th =
newthread(new threadstart(printname));
th.start();
這裡一定注意thread中的函式是沒有返回值和引數的
那麼有乙個引數時,就該如下:
string name="name";
thread th = new thread(printname);
th.isbackground = true; //後台執行
th.start(name);
public
void
printname(object name) // 函式
多個引數時,可以定義乙個結構體呼叫,具體如下:
struct prameters
prameters p=new prameters();
p.p1="name";
p.p2=0;
thread th = new thread(printname);
th.isbackground = true; //後台執行
th.start((object)p);
public
void
printname(object o) // 函式
也可使用這樣的方法:
thread th =
newthread(new parameterizedthreadstart(printname));
th.start(p);
如果遇到又需要返回值,又需要引數的時候,就可以考慮用非同步:
但是需要先申明個委託
public
delegate
string
methodcaller(string name);//定義個**
methodcaller mc = new methodcaller(getname);
string name = "my name";//輸入引數
iasyncresult result = mc.begininvoke(name,null, null);
string myname = mc.endinvoke(result);//用於接收返回值
public
stringgetname(string name) // 函式
這裡注意了,通過這種方式生成新執行緒是執行在後台的(background),優先順序為normal
說到這裡,不得不提一下c#中串列埠通訊將串列埠資料傳遞到窗體控制項時,需要用到委託。
c#串列埠通訊
C Delegate 委託 與多執行緒
很多時候寫windows程式都需要結合多執行緒,在.net中用如下得 來建立並啟動乙個新的執行緒。public void threadproc thread thread new thread new threadstart threadproc thread.isbackground true t...
c 委託與多執行緒
很多時候寫windows程式都需要結合多執行緒,在.net中用如下得 來建立並啟動乙個新的執行緒。public void threadproc thread thread new thread new threadstart threadproc thread.isbackground true t...
C Delegate 委託 與多執行緒
很多時候寫windows程式都需要結合多執行緒,在.net中用如下得 來建立並啟動乙個新的執行緒。public void threadproc thread thread new thread new threadstart threadproc thread.isbackground true t...