如何在计时器触发下一个事件之前检查剩余时间?

时间:2012-05-22 09:43:37

标签: c#

例如,我已将timer1.Interval设置为5000,我想知道在计时器滴答之前这个间隔有多少。我怎么能这样做?

5 个答案:

答案 0 :(得分:4)

  

如何查看计时器时间?

你做不到。计时器类无法检查计时器因火灾而剩余的时间。您可以做的最好的事情是跟踪计时器上次触发的时间,并计算自己在下一个刻度线之前剩余的时间。

答案 1 :(得分:2)

        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 ;*/



    }

答案 2 :(得分:1)

您可以使用间隔为1000(毫秒)的备用计时器。我不认为1ms的间隔确实是一种选择,因为这会给系统带来太大的压力,无论如何都是不可靠的。

每次这个计时器过去,你都可以查看刻度数(这总是多少1000?)并从(或使用模数)5000中减去它。

答案 3 :(得分:0)

  

但我不能:

那是因为在等号之前出现的不是符号,而不是相反的符号

<=而非=<

if (timer1.Interval <= 5000)
{
    //do something
}

答案 4 :(得分:0)

您正在使用Interval,这是一个不会被更改的属性(它将始终为5000,因此检查它是否小于5000是没有意义的)。此外,如果此代码在Timer1_Tick函数中,则效率不高。但是,我认为您需要的代码是:

if (timer1.Interval <= 5000)
{
  //do something
}