fark nedir between System.Windows.Forms.Timer()
ve System.Windows.Threading.DispatcherTimer()
? Hangi durumlarda kullanmalıyız? herhangi bir en iyi uygulama?
fark nedir between System.Windows.Forms.Timer()
ve System.Windows.Threading.DispatcherTimer()
? Hangi durumlarda kullanmalıyız? herhangi bir en iyi uygulama?
Yanıtlar:
Windows.Forms.Timer
timer olaylarını işlemek için windows formları mesaj döngüsünü kullanır. Windows Forms uygulamalarında kullanılan zamanlama olayları yazılırken kullanılmalıdır ve zamanlayıcının ana UI iş parçacığında çalışmasını istiyorsanız.
DispatcherTimer
WPF zamanlama mekanizmasıdır. Zamanlamayı benzer bir şekilde işlemek istediğinizde kullanılmalıdır (bu tek bir iş parçacığı ile sınırlı olmasa da - her iş parçacığının kendi dağıtıcısı vardır) ve siz WPF kullanıyorsunuz. Olayı Dağıtıcı ile aynı iş parçacığında tetikler.
Genel olarak WPF == DispatcherTimer
ve Windows Forms == Forms.Timer
.
Bununla birlikte, ayrı bir iş parçacığı üzerinde çalışan System.Threading.Timer
bir zamanlayıcı da class
var. Bu, kullanıcı arayüzünü vb. Güncellemeye çalışmadığınız tamamen sayısal zamanlama için iyidir.
Burada küçük örneklerle zamanlayıcılar hakkında güzel bir makale buldum: http://www.progware.org/Blog/post/Timers-in-WPF.aspx
Sonuç olarak:
DoSomething () GUI bileşenlerini işlerse, Timer ile birlikte kullanmanız gerekir: this.Dispatcher.Invoke ((Action) delegate {// GUI RELATED CODE HERE} çünkü farklı bir iş parçacığından doğrudan GUI denetimlerine erişemezsiniz. DispatcherTimer ile bunu yaparsınız. bunu yapmaya gerek yok.
DoSomething () zaman alıcı bir görev olarak gerçekleştirirse, DispatcherTimer durumunda GUI donacaktır. Zamanlayıcı durumunda, uzun metot farklı bir iş parçacığında yürütüldüğü için olmayacak