C 中委託和事件的簡單例子

2022-03-17 08:51:29 字數 1325 閱讀 1466

最近換工作,專案使用winform進行開發,多執行緒並行時有時需要使用其他執行緒建立的控制項,或者是需要使用其他窗體中的一些資訊(文字框內容,按鈕點選等),委託和事件使用比較多,因此寫乙個簡單的例子記錄一下。

要想使用委託,首先肯定要宣告

//

宣告委託

private

delegate

void testdelegate(string

addtext, richtextbox temp);

//委託變數

private testdelegate test

因為是多執行緒中使用,所以在宣告委託的執行緒中寫乙個呼叫委託的方法

//

呼叫委託

private

void invokedelegate(string

addtext, richtextbox temp)

); }

}

在另乙個執行緒中進行委託變數例項化以及委託呼叫

test = new

testdelegate(addtext);

invokedelegate(_addtext, _temprichtextbox);

private

void addtext(string

addtext, richtextbox temp)

以上就是多執行緒中使用委託來進行控制項使用的簡單例子

再來看乙個使用事件進行控制項之間訊息傳遞

首先宣告委託和事件

//

委託public

delegate

void delegatetest(string

text);

//事件

public

event delegatetest addtextevent;

在需要進行訊息傳遞的位置進行invoke(事件的發布)

addtextevent?.invoke(text);

在呼叫事件的位置(事件的訂閱)

eventtest et = new

eventtest();

et.addtextevent += new

eventtest.delegatetest(et_addtextevent);

private

void et_addtextevent(string

text)

以上就是winform中使用委託和事件來進行執行緒之間通訊的例子。

完整版**放在了github:

C 中委託和事件

當我們在窗體下定義變數後,是不是可以輕而易舉在此窗體使用這個變數呢?那麼如果跨窗體引用呢?其實也簡單,普遍操作,定義乙個全域性變數,但是這樣操作不規範,取而代之的是應該在某個窗體定義乙個類,然後在類中宣告乙個靜態變數,此時跨窗體使用的時候直接使用classname.staticname 既然變數可以...

C 中委託和事件的區別

大致來說,委託是乙個類,該類內部維護著乙個字段,指向乙個方法。事件可以被看作乙個委託型別的變數,通過事件註冊 取消多個委託或方法。本篇分別通過委託和事件執行多個方法,從中體會兩者的區別。通過委託執行方法 class program public class examplevoid print str...

C 中委託和事件的區別

大致來說,委託是乙個類,該類內部維護著乙個字段,指向乙個方法。事件可以被看作乙個委託型別的變數,通過事件註冊 取消多個委託或方法。本篇分別通過委託和事件執行多個方法,從中體會兩者的區別。class program public class example void print string str ...