最近換工作,專案使用winform進行開發,多執行緒並行時有時需要使用其他執行緒建立的控制項,或者是需要使用其他窗體中的一些資訊(文字框內容,按鈕點選等),委託和事件使用比較多,因此寫乙個簡單的例子記錄一下。
要想使用委託,首先肯定要宣告
//宣告委託
private
delegate
void testdelegate(string
addtext, richtextbox temp);
//委託變數
private testdelegate test
因為是多執行緒中使用,所以在宣告委託的執行緒中寫乙個呼叫委託的方法
//呼叫委託
private
void invokedelegate(string
addtext, richtextbox temp)
); }
}
在另乙個執行緒中進行委託變數例項化以及委託呼叫
test = newtestdelegate(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 = neweventtest();
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 ...