4

例如,我已经设置timer1.Interval5000并且我想知道在计时器滴答之前这个间隔还有多少。我该怎么做?

4

5 回答 5

4

如何查看定时器时间?

你不能。计时器类无法检查计时器触发前还剩多长时间。您可以做的最好的事情是跟踪计时器上次触发的时间并计算自己在下一次滴答之前还剩多长时间。

于 2012-05-22T10:01:01.323 回答
3
        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 ;*/



    }
于 2013-05-21T11:57:36.110 回答
1

您可以使用间隔为 1000(毫秒)的替代计时器。我不认为 1ms 的间隔真的是一个选择,因为这会给系统带来太多压力并且无论如何都不可靠。

每次经过此计时器时,您都可以检查滴答数(这是否总是 1000 的倍数?)并从(或使用模数)5000 中减去它。

于 2012-05-22T10:25:03.543 回答
0

但我不能:

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

<=不是=<

if (timer1.Interval <= 5000)
{
    //do something
}
于 2012-05-22T09:48:05.320 回答
0

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

if (timer1.Interval <= 5000)
{
  //do something
}
于 2012-05-22T09:48:57.073 回答