C#中委託回撥學習
阿新 • • 發佈:2018-11-06
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();