今天早上,我看到了我的一位同事的一些奇怪的代码.在winforms应用程序中,整个Mainform被赋予一个线程作为参考.他这样做是为了从Form中调用方法.没有什么可以与UI交互,只是简单的计算方法.我已经确定这不是最好的做法,但我想知道一些事情.如果我从一个线程内部调用Mainform中的方法,这些方法仍然作为多线程处理?或者它们是在Mainform中运行的?当我从一个线程调用Mainfrom方法时,UI线程会受到影响吗?
来自不同线程调用的表单中的函数将在调用它们的线程上运行,并且对GUI线程没有影响.作为副作用,这意味着如果您调用与GUI交互的函数,您将获得异常.
如果您希望在GUI线程上调用Control.Invoke(...)
它们,最简单的方法是调用,这会导致您传入的委托在GUI线程上执行,从而允许GUI交互.