在WPF应用程序中暂停和播放视频

时间:2012-09-25 16:37:05

标签: c# wpf

我最近开始研究C#。

我想要做的是在10秒后停止在WPF应用程序中播放的视频。我知道我需要某种计时器(DispatcherTimer),但不知道如何使用它。

对此方面的任何帮助表示赞赏。

XAML代码:

<MediaElement Canvas.Left="20" Canvas.Top ="40"
 Name="VideoControl" LoadedBehavior="Manual" UnloadedBehavior="Stop"  
 MediaOpened="VideoControl_MediaOpened" Source="c:\users\ayymmoo\documents\visual 
 studio 2010\Projects\play_video\play_video\How I Met Your Mother Season 06 Episode 03 
 - Unfinished.avi">
 </MediaElement> 

Xaml.cs代码

void PlayClick(object sender, EventArgs e)
{
    VideoControl.Play();
}
void PauseClick(object sender, EventArgs e)
{
    VideoControl.Pause();
}
void StopClick(object sender, EventArgs e)
{
    VideoControl.Stop();
}

private void VideoControl_MediaOpened(object sender, RoutedEventArgs e)
{

}

我试图用你定义的那个替换我的代码......并且它第一次正常工作但是当我从暂停位置再次播放时它在10秒之前再次暂停并且暂停间隔变得更小我一次又一次地玩这是代码

public void PlayClick(object sender, EventArgs e) {

    VideoControl.Play();
    var dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
    dispatcherTimer.Interval = new TimeSpan(0, 0, 10);
    dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        VideoControl.Pause();
    }

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码

启动你的计时器

var  dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,10);
dispatcherTimer.Start();

Ticked Method foreach interval

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
 .... 
}

答案 1 :(得分:0)

将您的计时器移出此范围到私有字段,在构造函数中初始化它,然后在PlayClick方法中启动计时器,但不要忘记在dispatcherTimer_Tick方法中停止计时器。

我认为第一次运行计时器时,它会起作用,然后第二次,你创建另一个计时器,但是第一次计时器仍然每隔十秒触发一次,然后恰好在你点击后不到十秒钟第二次玩。