如何检查计时器触发下一个事件之前还剩多少时间

本文关键字:事件 时间 多少 下一个 何检查 检查 计时器 | 更新日期: 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
}