我希望我的WPF应用程序在显示图像之前显示3秒倒计时,使用计时器根据经过的三秒钟显示“3,2,1”计数(意味着使用计时器更新UI)等待显示图像,直到三秒钟结束(意味着方法等待)。
在伪代码中,我尝试执行以下操作:
我正在尝试使用System.Timers.Timer,例如:
...
public int Countdown = 3;
...
private void UpdateCountdown(object source, EventArgs e)
{
Countdown--;
}
public void DoStuff()
{
Timer timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += UpdateCountdown;
timer.Start();
while (Countdown > 0)
{
// do not act until the 3 seconds have elapsed
}
// now that 3 seconds have elapsed...
ShowImage();
}
在我的xaml中,我将Countdown值绑定到TextBlock:
<TextBlock Name="TbCountdown" Text="{Binding Path=Countdown}"/>
我尝试了一些不同的东西,例如尝试Dispatcher.Invoke。我的问题是以下两件事之一总是发生:
有什么建议吗?
答案 0 :(得分:1)
不要忙于调整Countdown
中的DoStuff
值,而是将测试和ShowImage()
放在UpdateCountdown
处理程序中。
private void UpdateCountdown(object source, EventArgs e)
{
if (--Countdown == 0)
ShowImage();
}
public void DoStuff()
{
Timer timer = new Timer();
timer.Interval = 1000;
timer.Elapsed += UpdateCountdown;
timer.Start();
}