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.Timertimer 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.
DispatcherTimerWPF 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 == DispatcherTimerve Windows Forms == Forms.Timer.
Bununla birlikte, ayrı bir iş parçacığı üzerinde çalışan System.Threading.Timerbir zamanlayıcı da classvar. 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