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

タイマーをこのスコープからプライベートフィールドに移動し、コンストラクターで初期化してから、PlayClickメソッドでタイマーを開始しますが、dispatcherTimer_Tickメソッドでタイマーを停止することを忘れないでください。

最初にタイマーを実行すると機能し、2回目は別のタイマーを作成すると思いますが、最初のタイマーは10秒ごとに起動し、2番目の再生をクリックしてから10秒未満になります。時間。

于 2013-01-14T22:28:09.693 に答える
0

このコードで試すことができます

タイマーの初期化

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

Ticked メソッド foreach 間隔

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
 .... 
}
于 2012-09-25T16:41:13.293 に答える