DispatcherTimer,是一個後台執行緒計時器。
新舊區別,使用方法,
新舊區別
DispatcherTimer第一次亮相是在Silverlight(WPF)中作為一個後台執行緒計時器。與原System.Threading.Timer相比,不同之處在於DispatcherTimer是真正的在後台執行緒中獨立執行的,而定時器Timer仍然在UI執行緒中執行,每隔一個指定的時間接管UI執行緒的控制權。總體來看,DispatchTimer主要適合於調度任務的情況。在這種情況下,我們可以根據實際要求設定等待時間。請參考下面的示例。
清單3:
publicpartial class MainPage : UserControl
{
DispatcherTimer timer;
publicMainPage()
{
InitializeComponent();
DispatcherTimertimer= new DispatcherTimer();
timer.Tick += (s, e) => {
//每隔1000毫秒發生一次
//修改UI執行緒中的對象
this.TextBlock1.Text = DateTime.Now.ToString();
};
timer.Interval = TimeSpan.FromMilliseconds(1000);
timer.Start();
}
}
事實上,除StoryBoard組件之外dispatcherTimer也是Silverlight編程中實現動畫效果的一種重要技術。當然,我們應該當心使用dispatcherTimer有可能導致創建太多的後台執行緒,從而有可能導致增加CPU的負荷而降低效率。
使用方法
System.ComponentModel.BackgroundWorker首次出現在NET 2.0中,用於簡化Windows窗體應用程式多執行緒互動相關的編碼過程。現在,它也可用於Silverlight環境中。在後台實現中,BackgroundWorker使用了Dispatcher組件,並把所有多執行緒相關的複雜內容封裝在一個黑盒子中,為您提供最易於使用和現成的解決方案。整體來說,BackgroundWorker非常適合從事單一的,異步的,並在後台運行的長時間的任務。