WPF DispatcherTimer останавливается с большой задержкой
Доброго времени суток.
Есть форма WPF, и код на C#, который запускается при нажатии на кнопку:
static DispatcherTimer timer = new DispatcherTimer();
short ticksInMilliseconds = 0;
private void timerBeforeHideWindow(object sender, RoutedEventArgs e)
{
timer.Tick += new EventHandler(TimerHideWindow);
timer.Interval = TimeSpan.FromMilliseconds(1);
timer.Start();
}
private void TimerHideWindow(object sender, EventArgs e)
{
++ticksInMilliseconds;
if (ticksInMilliseconds <= 200) {
MainBorder.Opacity -= 0.05;
} else {
timer.Stop();
ticksInMilliseconds = 0;
MainBorder.Opacity = 1.0;
WindowState = WindowState.Minimized;
}
}
Проблема вот в чем: MainBorder по задумке должен стать невидимым(Opacity = 0.0) за 200мс, затем - окно сворачивается, возвращает нормальную прозрачность элементу MainBorder и стает неактивным. Однако таймер при выполнении условия останавливается не сразу, из-за этого окно еще около 1-2 секунд остается активным.
Перепробовал кучу вариантов, как сделать так, что бы таймер останавливался сразу. Может я что то делаю не так? =)
Заранее сердечное спасибо!
Источник: Stack Overflow на русском