0

我最近开始研究 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();
    }
4

2 回答 2

0

您可以尝试使用此代码

定时器的初始化

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)
{
 .... 
}
于 2012-09-25T16:41:13.293 回答
0

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

我认为您第一次运行计时器时,它可以工作,然后第二次,您创建另一个计时器,但第一个计时器仍然每十秒触发一次,然后恰好在您单击播放第二个之后不到十秒时间。

于 2013-01-14T22:28:09.693 回答