gpt4 book ai didi

c# - DispatcherTimer 在 Win 2k8 SP2 中的 Stop() 后继续触发

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:39 27 4
gpt4 key购买 nike

我今天收到一份有趣的错误报告。

我有一个 DispatcherTimer,它的 Tick 调用一个包含 Stop() 方法调用的 EventHandler。这会在我们用于开发的平台(Windows XP SP3 和 Windows 7)上停止计时器,但在 Windows Server 2008 SP2 计算机上运行时计时器似乎不会停止。

这是一个 .NET 3.5 项目。

我想知道这是否是 Win 2k8 中 System.Windows.Threading 中的一个已知错误,或者我是否在我的代码中做错了什么。

相关部分代码如下:

public DispatcherTimer UserDelayTimer;

private void _HierTreeControlWPF_Loaded(object sender, RoutedEventArgs e)
{
UserDelayTimer = new DispatcherTimer();
UserDelayTimer.Interval = new TimeSpan(0, 0, 0, 0, 500); //500 ms
UserDelayTimer.Tick += new EventHandler(OnTimerEvent);
UserDelayTimer.Start();
}

/// <summary>
/// Timer to run update after the user has stopped making selections in the hierarchy view.
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
void OnTimerEvent(object sender, EventArgs e)
{
if (HierTreeAfterCheck_Event != null && !HierTreeCheckEvent_Suppressed)
HierTreeAfterCheck_Event();
UserDelayTimer.Stop();
}

//This method is run whenever the mouse moves or makes a selection in the hierarchy tree.
//The idea is that HierTreeAfterCheck_Event() will only run after the user has stopped making
//selections for a certain amount of time.
public void ResetUserDelayTimer(object sender, MouseButtonEventArgs e)
{
if (UserDelayTimer.IsEnabled) //if the timer is running, restart it to buy more time.
{
UserDelayTimer.Stop();
UserDelayTimer.Start();
}
}

非常感谢!

最佳答案

想通了。结果我不得不修改 OnTimerEvent 的发送者,而不是定时器本身的公共(public)实例。

关于c# - DispatcherTimer 在 Win 2k8 SP2 中的 Stop() 后继续触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com