微軟在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("任務已經完成"); }