在DispatcherTimer之后UI无法正常工作

时间:2013-12-13 04:57:26

标签: c# wpf timer dispatcher dispatchertimer

实施DispatcherTimer后,我的涉及用户互动的应用程序无效。有关更多信息,我正在尝试使用跳跃运动开发应用程序。需要计时器与UI一起工作以供用户做出一些手势并在计时器结束后停止,但现在使用调度计时器后跳跃动作不再检测到任何手势。一些建议,谢谢!

我的计时器代码:

public MainWindow()
{
    dispatcherTimer = new DispatcherTimer();
    dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
    dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
    dispatcherTimer.Tick += dispatcherTimer_Tick;
    dispatcherTimer.Start();
}

void dispatcherTimer_Tick(object sender, EventArgs e)
{
    if (time > 0)
    {
        if (time <= 10)
        {
            if (time % 2 == 0)
            {
                TBCountdown.Foreground = Brushes.Red;
            }
            else
            {
                TBCountdown.Foreground = Brushes.Red;
            }
            time--;
            TBCountdown.Text = string.Format("00:0{0}:0{1}", time / 60, time % 60);
        }
        else
        {
            time--;
            TBCountdown.Text = string.Format("00:0{0}:{1}", time / 60, time % 60);
        }
    }
    else
    {
        dispatcherTimer.Stop();
        MessageBox.Show("Completed");
    }
}

2 个答案:

答案 0 :(得分:0)

感谢所有建议。 Dan Puzey是对的,它旨在以响应的方式使用WPF UI。 它有时只落后于lil,但总的来说它应该仍然有所回应。 希望它不再挂起。谢谢!

答案 1 :(得分:-2)

我相信Dispatcher在同一个UI线程上运行,因此使UI无响应。更好的方法是使用BackgroundWorker在后台线程上执行耗时的任务。