1. 程式人生 > >C#中委託回撥學習

C#中委託回撥學習

C#中的委託相當於C中的函式指標,可以將一個函式作為引數進行傳遞;

1.   定義private delegate void WeiTuo(string str)

2.   宣告:WeiTuo wt;

3.   例項化: wt=new WeiTuo(fangfa1);

        Shiyong(wt);//使用

Private void fangfa1(string text)

{

 textBox1.Text=text;

}

Private void Shiyong(WeiTuo wt)

{

String s= “123423”;

wt(s);

}

僅這種方法時,使用多執行緒會造成跨執行緒訪問問題,因此要使用

Control.CheckForIllegalCrossThreadCalls= false;

來禁止檢查是否跨執行緒,但這樣會造成安全隱患;

所以可以使用回撥來實現跨執行緒訪問控制元件

 

C#中的回撥,在訪問label、textBox等控制元件時常用

1.      定義: private delegate void CallBackCeShi(string str);

2.      宣告:CallBackCeShi cbcs;

3.      例項化:cbcs=new CallBackCeShi(fangfa);

 

Private void writeToBox()

{

 textbox.Invoke(cbcs,”這是回撥”);

}

Private void fangfa(string str)

{

 textBox1.Text=str;

}

4.      多執行緒:Thread th=new Thread(writeToBox);

       Th.Start();