如何检查计时器触发下一个事件之前还剩多少时间
本文关键字:事件 时间 多少 下一个 何检查 检查 计时器 | 更新日期: 2023-09-27 18:35:07
例如,我已将timer1.Interval
设置为5000
,我想知道在计时器滴答声之前还剩下多少间隔。我该怎么做?
如何查看计时器时间?
你不能。计时器类无法检查计时器因火灾还剩多长时间。您能做的最好的事情就是跟踪计时器上次触发的时间,并计算自己距离下一次即时报价还剩多长时间。
DateTime MainTimer_last_Tick = DateTime.Now;
System.Windows.Forms.Timer timer_Calc_Remaining;
timer_Calc_Remaining.Enabled = true;
timer_Calc_Remaining.Interval = 100;
timer_Calc_Remaining.Tick += new System.EventHandler(this.timer_Calc_Remaining_Tick);
在主计时器启动或滴答时:
timer_Main.Enabled = true;
MainTimer_last_Tick = DateTime.Now;
private void timer_Calc_Remaining_Tick(object sender, EventArgs e)
{
int remaining_Milliseconds = (int)(MainTimer_last_Tick.AddMilliseconds(timer_Main.Interval).Subtract(DateTime.Now).TotalMilliseconds);
.../*
int newValue = (timer_Main.Interval -remaining_Milliseconds) ;
progressBar1.Maximum = timer_Main.Interval+1;
progressBar1.Value = newValue ;*/
}
您可以使用间隔为 1000(毫秒)的备用计时器。我不认为 1 毫秒的间隔真的是一种选择,因为这会给系统带来太大的压力,而且无论如何都不可靠。
每次这个计时器过去,你都可以检查时钟周期的数量(这总是1000的倍数吗?)并从5000中减去(或使用模数)。
但我不能:
这是因为小于符号先于等号,而不是相反
它<=
不=<
if (timer1.Interval <= 5000)
{
//do something
}
您正在使用 Interval,这是一个不会更改的属性(它将始终为 5000,因此检查它是否小于 5000 毫无意义)。 此外,如果此代码位于Timer1_Tick
函数中,则效率不高。 但是,我认为您需要的代码是:
if (timer1.Interval <= 5000)
{
//do something
}