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