C 委託於跨執行緒非同步呼叫

2022-03-04 23:48:06 字數 1831 閱讀 6993

子執行緒訪問主線程式控制件時,會報出錯。

兩種方法可以實現第一種是,設定執行緒的檢查方式為無。

第二種是使用委託。第一種沒什麼好講的,這裡主要講下第二種。

1,首先是委託

delegate   

(1)委託的定義:將方法作為方法的引數

(2)定義委託:

delegate

void dele(int a, int b);

委託是一種資料型別,就像 int , float,student 學生類一樣

(3)宣告委託變數

dele del1=null;

(4)給委託變數賦值

del=new

dele(add);

static

void add(int a, int

b) ", a +b);

}

(5)呼叫委託

del(2, 3);

全部**:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

委託 weituo(

3, 4

, del);

console.readline();

}static

void weituo(int a,int

b,dele del)

static

void add(int a, int

b) ", a +b);

}static

void sub(int a, int

b) ",a-b);

}static

void mul(int a, int

b) ", a*b);

}static

void div(int a,int

b)

", a/b);}}

}

2 跨執行緒呼叫委託

(1)定義類

public

class

messagecreate

(2)類中定義委託,定義委託變數,呼叫委託

public

class

messagecreate

//呼叫委託

public

void show(listbox lb, string

strmsg));

}}

(3)而給委託變數賦值時要在主線程裡面賦值,那麼這樣乙個非同步呼叫委託就完成了。

//

新建乙個類

messagecreate mc = new

messagecreate();

//給類中的委託變數賦值

mc.my = new

messagecreate.mydelegate(showstatus);

//呼叫委託

mc.show()

------------------委託函式--------------------------

public

void showstatus(listbox lb, string

strmsg)

}

大功告成!

C 委託非同步呼叫

廢話不多說,直接上 ps 我就喜歡簡單 直接 粗暴 using system using system.collections.generic using system.linq using system.runtime.remoting.messaging using system.text us...

執行緒 委託的非同步呼叫

c programming p323 begininvoke 會立即返回,它將建立乙個另乙個執行緒來完成自己的工作。當我需要它執行後的結果時 例如 pubilc delegate in testdetegate pubilc testdetegate thedetegate thedetegate ...

C 委託的非同步呼叫

本文將主要通過 同步呼叫 非同步呼叫 非同步 三個示例來講解在用委託執行同乙個 加法類 的時候的的區別和利弊。首先,通過 定義乙個委託和下面三個示例將要呼叫的方法 新增的命名空間 using system.threading using system.runtime.remoting.messagi...