【问题标题】:Using Multiple Timers in the .NET Framework在 .NET Framework 中使用多个计时器
【发布时间】:2013-04-04 15:44:53
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: .net winforms visual-studio-2010


    【解决方案1】:

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

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

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

    【讨论】:

    • 甜蜜!我越想实现我的想法,我就越想,“这必须在框架中完成!”这就是我想问的原因。
    猜你喜欢
    • 1970-01-01
    • 2023-01-25
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多