我有一个 MDI 表单,其中包含 System.Windows.Forms.Timer在一定时间后,它会慢慢滴答作响,让员工注销。
此外,还有其他可能使用或未使用的形式也使用计时器。有些定时器用于读取 System.IO.Ports.SerialPort ,其他用于处理文本,因为它要么是键入的,要么是作为 SQL 2000 数据库中记录更改的。
现在,我将向新表单添加另一个计时器,该表单也将使用串行端口。
PC 上只会使用一 (1) 个串行端口,因此我已经重新设计了应用程序,以便 MDI 父级包含串行端口对象,并且仅将引用传递给需要它们的表单。
现在,我开始更多地思考这些计时器。
我开始考虑重新设计我的 MDI 父级,以拥有一个通用的 Tick 事件,所有东西都可以使用委托(delegate)来监听。
但后来我开始思考:我想知道 Visual Studio 是否已经做到了这一点?
那么,如果我向 Windows 窗体项目添加多个 Timer 控件,Visual Studio(或 .NET Framework)是否只需将监听器或其他东西插入到始终运行的更大的计时器中?
最佳答案
计时器确实不会“运行”。计时器设置操作系统触发器在特定时间触发。
不,创建通用 Tick 事件并不是更好。如果你这样做了,那么计划每分钟发生一次的事情将会每秒发生一次,他们将不得不忽略这一点。您最终将编写一堆复杂且脆弱的代码。
令人高兴的是,Windows 为您完成了这一切。底层计时器代码基本上执行您所说的操作。它有一个通用的滴答声,可以监听并根据需要将事件分派(dispatch)给您的计时器。如果您自己实现这一点,您最终会更有效地重复 Windows 已经做的事情。
关于.net - 在 .NET Framework 中使用多个计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815806/