c# - 2个计时器,一个落后另一个n秒

标签 c# timer mfc

这是我的问题:我有一个间隔为 5 分钟的计时器。我想要的是通知计时器只剩下 30 秒,这样我就可以启用/禁用某些控件(c# 中的 winforms)。我假设我为此需要 2 个计时器,也许是一个新的 MyTimer 类,它将这 2 个计时器作为数据成员。第一个计时器为 5 分钟,第二个为 4.5 分钟。第二个计时器会引发一个我会听的事件。有人对此有更好的想法吗?感谢您的帮助。

最佳答案

正如 Floris Velleman 上面提到的,最好使用 1 个以最小时基递增的计时器,例如 30 秒甚至 1 秒。然后使用一个计数器和一些会在特定时间使用react的条件语句。拥有 2 个计时器需要在两者之间进行同步,这可能会导致一些问题。

例如,间隔为 1 秒,您可以这样做:

int TimerInterval = 60 * 5; // 5 minutes
int NotifyTime = 30; // 30 seconds
int counter = 0;

// timer interval is set to 1 second
private void callback_MyTimer(object sender, EventArgs e)
{
    counter--;

    if (counter == NotifyTime)
    {
        // notify that 30 seconds are left...
    }

    // restart the counter for 5 minutes
    if (counter <= 0)
    {
        counter = TimerInterval;
    } 
}

关于c# - 2个计时器,一个落后另一个n秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639707/

相关文章:

c# - 为什么要在 ASP.NET 中以这种方式使用 using 语句?

c# - Inferred 命名空间中的类有效,但在显式命名时无效

c# - 出于好奇——有没有更好的方法来替换这个字符串?

java - 如何解决 Swing JPanel 中显示倒数计时器(JLabel)的延迟问题

c++ - Chromium 嵌入式框架 - 将 CSS/JS 附加/注入(inject)到页面(C++ - MFC)

c# - 如何将 Json 数组反序列化为不同的对象?

javascript - 与定时器异步运行

ios - 为什么我的 NSTimer 会双倍递减我的计时器?

c++ - MFC MessageMap 和虚函数

c++ - 如何获取CTreeCtrl中选中项的文件类型?文件扩展名可能被隐藏,因此 GetItemText 没有帮助