我已经尝试过 Dispatcher timer,但它似乎无法正常工作。
我设置了滴答事件,每个滴答都会添加到一个滴答计数器,但它只是没有正确地完成工作。我也有一个秒表来计算它已经过了多长时间,而且数字不匹配。请让我知道什么样的解决方案可以每秒给我 192 个滴答声。
Stopwatch sw = new Stopwatch();
public DispatcherTimer dt = new DispatcherTimer();
dt.Tick += dt_Tick;
dt.Interval = TimeSpan.FromMilliseconds(1000/192);
dt.Start();
sw.Start();
void dt_Tick(object sender, EventArgs e)
{
tick_textbox.Text = tick_counter.ToString();
seconds_textbox.Text = sw.Elapsed.ToString();
tick_counter++;
}
现在,我已将其降低到每秒 8 次,这应该可以解决分辨率问题,但是使用 TimeSpan.FromSeconds 和 TimeSpan.FromMilliseconds 的间隔会得到截然不同的结果:
dt.Tick += dt_Tick;
dt.Interval = TimeSpan.FromSeconds(2 / 16);
dt.Start();
对比
dt.Tick += dt_Tick;
dt.Interval = TimeSpan.FromMilliseconds(2000 / 16);
dt.Start();
这是什么原因?