2个定时器,落后于另一个定时器

时间:2013-12-17 16:38:07

标签: c# timer mfc

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

2 个答案:

答案 0 :(得分:1)

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

例如,间隔为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;
    } 
}

答案 1 :(得分:0)

Waitable Timer对象,特别是SetWaitableTimer功能,允许分别控制到期时间和周期。

MSDN文档为here