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

标签 .net winforms visual-studio-2010

我有一个 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/

相关文章:

c# - 最快的 C# 输出解析器生成器工具是什么?

winforms - 在 Infragistics UltraGrid 中为选定行上有错误的单元格设置背景

c# - 如何制作一个适用于多种形式的变量?

silverlight - 当前不会命中断点 : No symbols have been loaded for this document

c# - 其他对象引发的工作事件时的跨线程操作

c# - 为什么 DataContractSerializer 会生成一个名称为 : "z:anytype"? 的节点

.net - 电影数据库使用 SQL 或 NoSQL .net

python - 在 Python.net 应用程序中安装自定义 IMessageFilter 时出现段错误

visual-studio-2010 - 有没有像 CodeRush 这样的免费 Visual Studio 扩展 "drops markers"

c# - 使用通用值类型枚举器跳过 foreach IDisposable 检查