Сегодня я получил интересный отчет об ошибке.
У меня есть DispatcherTimer, Tick которого вызывает EventHandler, который содержит вызов метода Stop ().Это останавливает таймер на платформах, которые мы используем в разработке (Windows XP SP3 и Windows 7), но таймер не останавливается при запуске на компьютере с Windows Server 2008 с пакетом обновления 2 (SP2).
Это .NET 3.5project.
Мне интересно, является ли это известной ошибкой в System.Windows.Threading в Win 2k8 или я что-то не так делаю в своем коде.
Соответствующие части коданиже:
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();
}
}
Большое спасибо заранее!