C# 为什么调度员会立即启动,而不是等待间隔出现?

C# 为什么调度员会立即启动,而不是等待间隔出现?,c#,dispatchertimer,C#,Dispatchertimer,我想用一个调度器来决定鼠标点击是点击还是双击。我正在使用mm8中的解决方案 我的测试代码如下: DispatcherTimer\u myTimer=newdispatchertimer(); 公共构造函数() { _myTimer.Interval=新的时间跨度(1000); _myTimer.Tick+=OnOneClickTick; } private void OnPreviewMouseLeftButtonDownCommand(MouseButtonEventArgs e) { 尝试

我想用一个调度器来决定鼠标点击是点击还是双击。我正在使用mm8中的解决方案

我的测试代码如下:

DispatcherTimer\u myTimer=newdispatchertimer();
公共构造函数()
{
_myTimer.Interval=新的时间跨度(1000);
_myTimer.Tick+=OnOneClickTick;
}
private void OnPreviewMouseLeftButtonDownCommand(MouseButtonEventArgs e)
{
尝试
{
如果(例如,点击次数==2)
{
_myTimer.Stop();
字符串dummy=“”;
}
其他的
{
_myTimer.Start();
}
}
捕获(例外情况除外)
{
MessageBox.Show(“错误”);
}
}
私有void OnOneClickTick(对象发送方,System.EventArgs e)
{
_myTimer.Stop();
字符串dummy=“”;
}
这个想法是,当我单击一次时,启动计时器,但不要执行,只需等待第二次单击,如果没有发生,则运行itmer处理程序,如果发生,则停止计时器,这样计时器就不会执行

但是,在单击鼠标事件中启动计时器时,计时器处理程序会立即执行。我认为计时器处理程序的代码将在间隔出现后执行,在1秒后(1秒有时间测试它是否工作,稍后250ms是一个很好的间隔)


这是为什么?

您正在使用的
TimeSpan
的构造函数是作为参数的。因此,您基本上设置了1000个滴答声的间隔,即0.0001秒,因此似乎会立即调用回调,但事实并非如此

你应该改用