微軟在WPF引入了Dispatcher,那麼這個Dispatcher的主要做用是什麼呢?
Dispatcher的做用是用於管理線程工做項隊列。
主線程負責接收輸入、處理事件、繪製屏幕等工做,這樣一來,UI界面是主線程建立的,由於子線程不能直接更新由主線程維護的UI界面,全部調用Dispatcher更新UI。
實例:WPF更新UI
方式一
new Thread(()=>{
this.Dispatcher.Invoke(new Action(()=>{
//通知主線程去完成更新
}));
}).Start();
方式二
Application.Current.Dispatcher.Invoke(new Action(() => {
Application.Current.MainWindow.Title = "我修改過的窗體標題";
}));
方式三:異步機制
var task = Application.Current.Dispatcher.BeginInvoke(new Action(() => {
Application.Current.MainWindow.Title = "我修改過的窗體標題";
}));
task.Completed += new EventHandler(task_Completed);
static void task_Completed(object sender, EventArgs e)
{
MessageBox.Show("任務已經完成");
}異步