c#使用委托跨线程调用控件及方法

 下面通过使用 EventHandlerMethodInvoker 两种方式实现c#多线程或者线程池在子线程中调用其他窗体的控件两种委托方式。

c#使用委托跨线程调用控件及方法

MethodInvoker 委托方式

 MethodInvoker 表示一个委托,该委托可以执行托管代码中声明为 void不接受任何参数 的任何方法。

 在对控件的 invoke 方法进行调用时或需要一个 简单委托 又不想自己定义时可以使用该委托。

MethodInvoker 委托方式使用示例

MethodInvoker methodInvoker;

methodInvoker=new MethodInvoker(自定义方法())

Views.Purcuase.Bill.bill.BeginInvoke(methodInvoker) //要委托给哪个窗体

EventHandler 委托方式

 EventHandlerMethodInvoker 差不多最直观的不同就是 EventHandler 可以 传递参数子线程 中直接使用。

EventHandler 委托方式使用示例

 // 可以直接在线程方法中使用
Views.Purcuase.Bill.bill.BeginInvoke(new EventHandler(delegate {

      Views.Purcuase.Bill.bill.sscb_agent.comboBox1.DataSource = worker_list.data;
      Views.Purcuase.Bill.bill.sscb_agent.comboBox1.ValueMember = "worker_id";
      Views.Purcuase.Bill.bill.sscb_agent.comboBox1.DisplayMember = "worker_real_name";
      Views.Purcuase.Bill.bill.sscb_agent.comboBox1.DroppedDown = true;

}));

c#使用委托跨线程调用控件及方法

 以上就是c#通过使用 EventHandlerMethodInvoker 两种委托跨线程调用控件及方法。

给TA打赏
共{{data.count}}人
人已打赏
运维

php查找扩展so,dll文件位置方法

2024-11-22 11:59:19

运维

c#接口绑定控件数据源

2024-11-22 11:59:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索