在WPF中处理定时事件的最佳方法是什么?

5

我有一个简单的应用程序,其中包含媒体元素,并播放一些电影。我希望在每个电影播放结束和下一个电影开始之间有15秒的延迟。

我对WPF不熟悉,虽然我知道如何使用计时器和control.Invoke来完成旧版(WinForms)的操作,但我认为在WPF中必须有更好的方法。是否存在这样的方法?

1个回答

4

DispatcherTimer是你想要的。在这种情况下,你需要创建一个间隔为15秒的DispatcherTimer,启动第一个视频。然后当该视频完成时,启用计时器,在tick事件中显示下一个视频,并将计时器设置为禁用,以便它不会每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();
}

它是否在UI线程上执行,还是像普通计时器一样需要使用control.Invoke? - Krzysztof Kozmic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接