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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//声明和需进行跨线程调用的方法相同形参表的委托
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();
}
}

欢迎关注我的其它发布渠道