c# 通过delegate委托向主线程发送信息
发布时间:2020-12-16 01:23:03 所属栏目:百科 来源:网络整理
导读:c# windows编程,常会用到多线程,在新开的线程中要对主线程的页面数据进行更改时,需要通过delegate进行委托 public delegate void show( string info); //定义一个委托,参数为string private void add_info_event( string info) //定义一个方法,判断控件
c# windows编程,常会用到多线程,在新开的线程中要对主线程的页面数据进行更改时,需要通过delegate进行委托 public delegate void show(string info); //定义一个委托,参数为string private void add_info_event(string info) //定义一个方法,判断控件是否需要引用才可操作,将该方法与委托进行绑定,并用Invoke调用该委托和传递参数。 { if (this.txb_info.InvokeRequired) { show d = new show(add_info_event); //声明一个show委托,并且该委托指向add_info_event方法 this.Invoke(d,new object[] { info }); //引用该委托,并传递参数 } else { add_info(info); //调用真正的代码逻辑 } } 在新开线程代码中,直接调用add_info()属于跨线程操作,无法操控主线程内容,调用add_info_event()即可。 ? 扩展:如果主form,生成一个子form,子form要对主form的进行通信,更改内容,也可以使用delegate和event相配合。 子form1: public delegate void sendMessage(string message); //定义一个委托,发送消息 public event sendMessage sendTo; //声明一个事件,类型为sendMessage 调用sendTo(string message)向主窗体通信 主form: Form1 form1=new Form1(); 子窗体发送消息,一个委托,一个事件sendTo 主窗体接收消息,一个委托 两个委托都指向主窗体的SendArgs方法 子窗体触发事件sendTo,即调用sendMessage委托,执行sendArgs方法,sendArgs方法判断更改控件需要引用来执行,则调用getMessage委托; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |