C# 调用Thread.NET.this vs.控件

C# 调用Thread.NET.this vs.控件,c#,.net,multithreading,C#,.net,Multithreading,我注意到,当“给予焦点”回到主线程时,当从另一个线程调用时,您可以调用“this”或您想要调用的控件。我注意到,当返回控制时,这并不重要,所以有人能解释为什么我会调用主线程上的控制吗?这有关系吗,还是隐式调用了主线程 会, this.Invoke(InvokedMethod,args) 不同于 button1.Invoke(InvokedMethod,args) 当button1在我的主窗体上时。方法由控件定义 因此,可以从任何控件实例访问它们 编写表单时,类继承表单类,该类(间接)继承控件

我注意到,当“给予焦点”回到主线程时,当从另一个线程调用时,您可以调用“this”或您想要调用的控件。我注意到,当返回控制时,这并不重要,所以有人能解释为什么我会调用主线程上的控制吗?这有关系吗,还是隐式调用了主线程

会,

this.Invoke(InvokedMethod,args)
不同于

button1.Invoke(InvokedMethod,args)
当button1在我的主窗体上时。

方法由
控件定义

因此,可以从任何
控件
实例访问它们

编写表单时,类继承
表单
类,该类(间接)继承
控件
。因此,也可以通过
this
实例访问它们


选择哪一个并不重要。

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

调用我的控件是否会自动调用我的主窗体?如果我在主窗体上调用一个控件,同一窗体上的其他控件也会被调用吗?你是什么意思?调用
Invoke
将在UI线程上执行一个方法。它与特定控件无关。