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;
        }
    }
}

 

posted @ 2025-06-19 11:26  市丸银  阅读(7)  评论(0)    收藏  举报