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

例如,我已将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(毫秒)的备用计时器。 我不认为1ms的间隔确实是一个选项,因为这会对系统造成太大的压力并且无论如何都是不可靠的。

每次这个计时器过去,你可以检查滴答的数量(这总是多少1000?)并从(或使用模数)5000中减去它。

但我不能:

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

<= not =<

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

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

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