关于System.Windows.Forms.Timer的问题

时间:2010-02-25 15:03:17

标签: c# .net winforms timer

我正在构建一个从套接字数据和图表行读取的WinForms应用程序。 我使用System.Windows.Forms.Timer每秒触发

事件
  • 从套接字填充的队列中获取数据
  • 重绘图表上的行

我的问题是关于Timer对象:我有一个Timer对象,每个WinForm都有一个重绘图表;所以假设我有20个图表,我将有20个表格,共有20个计时器。

这是一个好方法吗?我根据以下内容做出了决定(如果我错了请纠正我)

  • Forms.Timer实例不会在我的应用程序上创建一个Thread,但只是在从Form的消息泵接收WM_TIMER事件时触发该事件。
  • 它存在于GUI的同一个线程中,因此我可以直接访问表单的每个元素,而不必担心太多。

太多的计时器是一个好方法还是我有缺点? 谢谢 AFG

3 个答案:

答案 0 :(得分:2)

这是一种很好的方法,尽管您可能希望重复使用计时器,而不是为每个表单创建单独的计时器 例如,您可以创建一个static Timer对象,并在表单构造函数中添加Tick处理程序。当表单关闭时(DisposeOnClose),或者您的表单永远不会死亡,请务必取消订阅活动。

答案 1 :(得分:1)

也许更好的方法是使用工作线程来接收数据并使用从该工作线程触发的事件来通知UI重绘自己。

答案 2 :(得分:0)

为什么不在套接字收到数据时立即重新划线?