实施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");
}
}
答案 0 :(得分:0)
感谢所有建议。 Dan Puzey是对的,它旨在以响应的方式使用WPF UI。 它有时只落后于lil,但总的来说它应该仍然有所回应。 希望它不再挂起。谢谢!
答案 1 :(得分:-2)
我相信Dispatcher在同一个UI线程上运行,因此使UI无响应。更好的方法是使用BackgroundWorker在后台线程上执行耗时的任务。