为什么DispacherTimer.Tick事件发生两次?

时间:2013-12-18 18:23:06

标签: c# wpf dispatchertimer

我使用DispacherTimer自动保存文件。代码如下:

void beginAutoSave()
{
    _autoSaveDispacherTimer = new DispatcherTimer();
    _autoSaveDispacherTimer.Interval = TimeSpan.FromMinutes(1);
    _autoSaveDispacherTimer.Tick += new EventHandler(onAutoSaveTick);
    _autoSaveDispacherTimer.Start();
}

void onAutoSaveTick(object sender, EventArgs e)
{
    // I save the file with a randomly generated file name
}

我只打了一次 beginAutoSave()。问题是在每个Tick事件中,正在保存两个不同的文件。换句话说, onAutoSaveTick(...)方法被调用两次。两个调用中的调用堆栈似乎相同。我的错误在哪里?

感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:1)

onAutoSaveTick将被称为after every one minute。如果要执行一次,则需要stop explicitly计时器。

来自MSDN文档 -

  

在Interval中指定的时间过后,Tick事件将触发。   Tick继续在相同的Interval中触发,直到Stop方法为止   调用。

在tick处理程序中执行此操作:

void onAutoSaveTick(object sender, EventArgs e)
{
    // I save the file with a randomly generated file name
    _autoSaveDispacherTimer.Stop();
}