C# 委托 重新认识
一、常用委托
委托的方法,返回值和参数相同(类型、数量)
1、声明
public delegate 返回类型 委托名(参数类型 参数名, ...);
2、使用
委托名 委托对象名 = new 委托名(委托方法名); 委托对象名(委托方法参数);
简写
委托名 委托对象 = 委托方法名;
委托对象名(委托方法参数);
二、UI委托
1、Control.Invoke
方法的作用是将委托对象传递到控件所在的 UI 线程上执行
2、语法
Control.Invoke(Delegate method,object[] args); // Delegate method:要在 UI 线程上执行的委托实例 // object[] args:传递给该委托的参数数组
3、InvokeRequired
a、Control的属性
b、作用:判断Conrol是否在UI线程,若不是返回true,否则返回false
4、使用案例
public delegate void ControlIOStatusConsumer(Control IOCtrl, string state); public void IOStatus(Control IOCtrl, string state) { if (IOCtrl.InvokeRequired) IOCtrl.Invoke(new ControlIOStatusConsumer(IOStatus), new object[] { IOCtrl, state}); else { switch (state) { case "1": IOCtrl.BackColor = Color.Green; break; case "0": IOCtrl.BackColor = SystemColors.Info; break; } } }