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

Krz*_*mic 5 .net wpf timer

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

MrT*_*lly 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();
Run Code Online (Sandbox Code Playgroud)

假设您在视频结束时触发了一个事件,然后设置

yourTimer.Enabled = True;
Run Code Online (Sandbox Code Playgroud)

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

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