【问题标题】:Creating Timer Class with Duration and Interval Triggers in C#在 C# 中创建具有持续时间和间隔触发器的计时器类
【发布时间】:2011-03-07 14:50:49
【问题描述】:

是否有一个类允许您设置一个对象,该对象将在 X 秒(或毫秒)内保持活动状态,并可选择允许您以 Y 秒(或毫秒)的间隔触发某些东西?

我知道有 System.Timers.Timer 但这似乎仅适用于间隔(并且没有使该间隔可选)。我目前正在自己​​构建这个功能,除了间隔的东西外,一切正常。对于极长的持续时间或极小的间隔,间隔有时会比应执行的时间少 1 或 2 倍,我知道这是因为每次间隔执行都会丢失一些滴答声,所以执行间隔越多,丢失的滴答声就越多.

我只是想确保 .NET 3.5 框架中当前不存在具有此确切功能的任何内容,然后我尝试尝试一些想法以使间隔始终执行正确的次数。

【问题讨论】:

标签: c# time timer


【解决方案1】:

最好的办法是检查您的OnTimedEvent(object source, ElapsedEventArgs e) 事件处理程序的ElapsedEventArgs 中的时间,并计算您启动它的时间与触发时间(或最后一次触发时间)之间的差异.然后,您可以在逻辑中考虑计时器触发的确切时间间隔。我不认为你可以让计时器 100% 精确到毫秒,但如果你真的需要精确计时,你可以允许它。

【讨论】:

    【解决方案2】:

    System.Threading.Timer 类呢?如果您不需要使用间隔触发计时器,您可以使用Timeout.Infinite

    【讨论】:

      【解决方案3】:

      您可能想试试Quartz.NET。它具有丰富的 API,可用于以您可能需要的任何间隔、重复和失火来安排任何类型的作业/事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 2018-06-09
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多