在.NET Framework中使用多个计时器

时间:2013-04-04 15:44:54

标签: .net winforms visual-studio-2010

我有一张带有System.Windows.Forms.Timer的MDI表格,在一段时间后会慢慢退出员工。

此外,还有其他形式可能正在使用或未使用也使用计时器。一些计时器用于从System.IO.Ports.SerialPort读取,其他计时器用于处理文本,因为它是在SQL 2000数据库中输入或作为其更改的记录。

现在,我即将添加另一个计时器到一个也将使用串行端口的新表单。

只有一(1)个串口将在PC上使用,所以我已经重新设计了应用程序,以便MDI Parent包含Serial Port对象并只传递对需要它们的表单的引用。

现在,我开始更多地考虑这些计时器。

我开始考虑重新设计我的MDI Parent以获得一个通用的Tick事件,所有事情都可以使用委托来监听。

但后来我开始思考:我想知道Visual Studio是否已经这样做了吗?

因此,如果我将多个Timer控件添加到Windows窗体项目中,Visual Studio(或.NET Framework)是否只是将一个侦听器或其他东西插入一个总是在运行的更大的计时器?

1 个答案:

答案 0 :(得分:2)

计时器不会“跑”,真的。计时器设置操作系统触发器在特定时间触发。

不,创建通用Tick事件并不是更好。如果你这样做,那么计划每分钟发生一次的事情将获得他们必须忽略的每秒一次的滴答。你最终会编写一堆复杂而脆弱的代码。

令人高兴的是,Windows为您做到了这一切。底层的计时器代码基本上就是你所说的。它有一个它会监听的通用标记,并根据需要向您的计时器发送事件。如果您自己实现了这一点,那么您最终会更有效地复制Windows的功能。