WPF

2009-02-10 16 views
5

'da zamana bağlı olaylarla çalışmanın en iyi yolu nedir? İçinde medya öğesi olan basit bir uygulamam var ve birbiri ardına birkaç film oynatıyor. Bir filmin çalmasını durduruyor ve diğeri başlayacak 15 saniyelik bir gecikme olmasını istiyorum. WPF'ye yeni geldim ve bunun bir zamanlayıcı ve control.Invoke ile eski (WinForms) yolunu nasıl yapacağımı bilmeme rağmen, WPF'de daha iyi bir yol olması gerektiğini düşündüm. Var mı?WPF

cevap

4

DispatcherTimer ne istiyor. Bu örnekte, 15 saniye arayla bir DispatcherTimer oluşturursunuz, ilk videoyu başlatın. Daha sonra bu video tamamlandığında, zamanlayıcıyı etkinleştirir ve onaylama olayında bir sonraki videoyu gösterir ve zamanlayıcıyı devre dışı bırakacak şekilde ayarlayın, böylece her 15 saniyede bir tetiklenmez. DispatcherTimer System.Windows.Threading ad alanında yaşıyor.

DispatcherTimer yourTimer = new DispatcherTimer(); 

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

Video yourTimer.Tick olay işleyicisi içinde daha sonra bitmiş

yourTimer.Enabled = True; 

kurmak ve sürmekte olan bir olay

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

o UI iş parçacığı üzerinde çalıştırmak veya yapıyor ateş varsayarsak Control.Invoke normal zamanlayıcı ile yapmak zorunda mıyım? –

+0

teşekkürler, tam ihtiyacım olan şey bu. –