2

我有一个带有System.Windows.Forms.Timer的 MDI 表单,它会在一定时间后缓慢滴答作响以注销员工。

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

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

PC 上只有一 (1) 个串行端口,因此我已经重新设计了应用程序,以便 MDI 父级包含串行端口对象,并且只将引用传递给需要它们的表单。

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

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

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

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

4

1 回答 1

2

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

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

令人高兴的是,Windows 为您完成了这一切。底层计时器代码基本上完成了您正在谈论的工作。它有一个可以监听的通用滴答声,并根据需要将事件分派给您的计时器。如果你自己实现了这个,你最终会更有效地复制 Windows 已经做的事情。

于 2013-04-04T16:46:42.407 回答