2009-02-10 2 views
5

zu arbeiten Ich habe eine einfache App, die Medienelement enthält, und es spielt einige Filme nacheinander ab. Ich möchte eine Verzögerung von 15 Sekunden haben, bis ein Film aufhört zu spielen, und der nächste beginnt. Ich bin neu in WPF und obwohl ich weiß, wie man das alte (WinForms) Weg mit einem Timer und control.Invoke, dachte ich, dass es einen besseren Weg in WPF geben muss. Ist da?Was ist der beste Weg, um mit zeitgesteuerten Ereignissen in WPF

Antwort

4

Die DispatcherTimer ist, was Sie wollen. In diesem Fall erstellen Sie einen DispatcherTimer mit einem Intervall von 15 Sekunden. Starten Sie das erste Video. Wenn das Video abgeschlossen ist, aktivieren Sie den Timer und zeigen Sie im Tick-Ereignis das nächste Video an, und stellen Sie den Timer auf deaktiviert ein, so dass er nicht alle 15 Sekunden ausgelöst wird. Der DispatcherTimer befindet sich im System.Windows.Threading-Namespace.

DispatcherTimer yourTimer = new DispatcherTimer(); 

yourTimer.Interval = new TimeSpan(0, 0, 15); //fifteen second interval 
yourTimer.Tick += new EventHandler(yourTimer_Tick); 
firstVideo.Show(); 

Angenommen, Sie haben ein Ereignis ausgelöst, wenn das Video dann

eingestellt fertig ist
yourTimer.Enabled = True; 

und dann in der yourTimer.Tick Ereignishandler

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

es auf UI-Thread ausführt oder tun Ich muss die Kontrolle übernehmen. Wie mit dem normalen Timer einspringen? –

+0

danke, genau das habe ich gebraucht. –

Verwandte Themen