调用Thread .NET .this与.control

时间:2010-01-24 15:41:01

标签: c# .net multithreading

我注意到当“给焦点”回到你的主线程时,当从另一个线程调用时,你可以调用“this”或你想要的控件,然后调用。我注意到在控制回来时这无关紧要,所以有人可以解释为什么我会调用主线程的控件吗?是否重要,或者主要线程是否被隐式调用?

会,

this.Invoke(InvokedMethod,args)

不同
button1.Invoke(InvokedMethod,args)

当button1在我的主表单上时。

2 个答案:

答案 0 :(得分:2)

Invoke方法由Control类定义。

因此,可以从任何Control实例访问它们。

当您编写表单时,您的类将继承Form类,该类(间接)继承Control。因此,它们也可以通过this实例访问。

选择哪一个并不重要。

答案 1 :(得分:2)

调用控件使用控件的句柄来确定哪个线程是控件的UI线程,然后使用该线程执行。可以有多个UI线程(UI线程是运行消息循环的任何线程),或者控件可以具有非UI线程的句柄(如果不正确地创建控件)。通常,在主窗体或控件上调用之间没有区别,但在某些情况下它可能很重要。