WPF DispatcherTimer останавливается с большой задержкой

Рейтинг: 0Ответов: 0Опубликовано: 29.01.2023

Доброго времени суток.

Есть форма 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 секунд остается активным.

Перепробовал кучу вариантов, как сделать так, что бы таймер останавливался сразу. Может я что то делаю не так? =)

Заранее сердечное спасибо!

Ответы

Ответов пока нет.