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();

猜你喜欢

转载自blog.csdn.net/weixin_38425185/article/details/78673678