多執行緒 委託的使用

2021-07-07 10:08:51 字數 1604 閱讀 8206

新建乙個執行緒(無引數,無返回值)

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...