在WPF中使用时间驱动事件的最佳方法是什么?

时间:2009-02-10 10:24:20

标签: .net wpf timer

我有一个简单的应用程序,里面有媒体元素,它会一个接一个地播放一些电影。我想在一部电影停止播放和下一部电影开始之间有15秒的延迟。 我是WPF的新手,虽然我知道如何使用Timer和control.Invoke来实现旧的(WinForms)方式,我认为在WPF中必须有更好的方法。有吗?

1 个答案:

答案 0 :(得分:4)

DispatcherTimer就是你想要的。在这种情况下,您将创建一个间隔为15秒的DispatcherTimer,启动第一个视频。然后,当该视频完成启用计时器并在刻度事件中显示下一个视频,并将计时器设置为禁用,因此它不会每15秒触发一次。 DispatcherTimer位于System.Windows.Threading命名空间中。

DispatcherTimer yourTimer = new DispatcherTimer();

yourTimer.Interval = new TimeSpan(0, 0, 15); //fifteen second interval
yourTimer.Tick += new EventHandler(yourTimer_Tick);
firstVideo.Show();

假设您在视频播放时触发了某个事件,请设置

yourTimer.Enabled = True;

然后在yourTimer.Tick事件处理程序

private void yourTimer_Tick(object sender, EventArgs e)
{
    yourTimer.Enabled = False;//Don't repeat every 15 seconds
    nextVideo.Show();
}