C# 从计时器更新Winforms控件

C# 从计时器更新Winforms控件,c#,multithreading,winforms,timer,C#,Multithreading,Winforms,Timer,我正在努力理解表格。计时器更好。 据我所知,计时器是在线程池中的线程上执行的,在这种情况下,您不应该从计时器中更新窗体上的控件(因为这不是创建此控件的线程) 但是,在microsoft()提供的示例中,他们正在从计时器更新控件 所以,我的问题是,从计时器(没有control.Invoke调用)更新控件(比如标签)是否有任何问题 若否,原因为何?(因为这是线程池中的一个线程,而不是创建控件的线程)该线程已优化,可与UI一起使用 从上面的链接。重点地雷: 计时器用于按用户定义的时间间隔引发事件此Wi

我正在努力理解表格。计时器更好。 据我所知,计时器是在线程池中的线程上执行的,在这种情况下,您不应该从计时器中更新窗体上的控件(因为这不是创建此控件的线程)

但是,在microsoft()提供的示例中,他们正在从计时器更新控件

所以,我的问题是,从计时器(没有control.Invoke调用)更新控件(比如标签)是否有任何问题

若否,原因为何?(因为这是线程池中的一个线程,而不是创建控件的线程)

该线程已优化,可与UI一起使用

从上面的链接。重点地雷:

计时器用于按用户定义的时间间隔引发事件此Windows计时器专为使用UI线程执行处理的单线程环境设计。它要求用户代码有一个可用的UI消息泵,并且始终从同一个线程运行,或者将调用封送到另一个线程

有一个SynchronizingObject,如果要使用该对象,可以将其设置为Form对象

从以上链接:

当SynchronizingObject为null时,将对系统线程池中的线程调用处理已用事件的方法。有关系统线程池的更多信息,请参阅线程池。 当通过可视Windows窗体组件(如按钮)处理已运行的事件时,通过系统线程池访问组件可能会导致异常,或者可能无法工作通过将SynchronizingObject设置为Windows窗体组件来避免此影响,这会导致在创建组件的同一线程上调用处理已用事件的方法。


注意!!=!=。。。在不同的名称空间中,.NET平台内置了许多
Timer
类。查看(向下滚动至绿色提示部分)。您所指的计时器是什么类型的?您完全可以使用Forms.timer更新窗体控件。请试一试,看看,如果你有什么特别的问题,请回来。