WayneShao 的博客

记录精彩的程序人生

使用委托解决方法的跨线程调用问题

//声明和需进行跨线程调用的方法相同形参表的委托
public delegate void AddStatusInfoToFormCallback(string str);
private void AddStatusInfoToForm(string str)
{
    //检测调用控件的线程和创建控件的线程是否相同
    //如果调用控件的线程和创建创建控件的线程不是同一个则为True
    if (InvokeRequired)
    {
        //使用委托调用本方法
        var d = new AddStatusInfoToFormCallback(AddStatusInfoToForm);
        Invoke(d, str);
    }
    else
    {
        //当前线程调用
        Controls.Clear();
    }
}
留下你的脚步