定时器间隔1000!= 1秒?

Tim*_*ler 9 c# timer seconds

我有一个标签,应该显示我的计时器的秒数(换句话说,我有一个变量,每个计时器的间隔加1).我的计时器间隔设置为1000,因此标签应每秒更新一次(并且还应显示秒数).但这个标签在数百之后已经过了1秒.获得1秒的适当间隔是多少?

int _counter = 0;
Timer timer;

timer = new Timer();
timer.Interval = 1000;
timer.Tick += new EventHandler(TimerEventProcessor);
label1.Text = _counter.ToString();
timer.Start();

private void TimerEventProcessor(object sender, EventArgs e)
{
  label1.Text = _counter.ToString();
  _counter += 1;
}
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 10

获得一秒的适当间隔是1000. Interval属性是以毫秒为单位的刻度之间的时间:

MSDN:Timer.Interval属性

所以,这不是你设置的错误间隔.检查代码的其余部分,例如更改计时器的间隔或Tick多次绑定事件.


dar*_*yal 5

而不是Tick事件,使用Elapsed事件.

timer.Elapsed += new EventHandler(TimerEventProcessor);
Run Code Online (Sandbox Code Playgroud)

并更改TimerEventProcessor方法的签名;

private void TimerEventProcessor(object sender, ElapsedEventArgs e)
{
  label1.Text = _counter.ToString();
  _counter += 1;
}
Run Code Online (Sandbox Code Playgroud)

  • `timer.Elapsed + = TimerEventProcessor;`就足够了. (2认同)
  • 这是一个不同的`Timer`类.没有`Timer`类同时有'Tick`和`Elapsed`事件. (2认同)