1.Wpf 多線程修改UI示例:
//啟動線程修改UI,拋出異常 ThreadPool.QueueUserWorkItem((q) => { button.Content = "張三"; }, null);
解決方案:使用Dispatcher.BeginInvoke+委托方式,修改UI
將修改UI的代碼封裝在委托中
//啟動線程處理 Thread thread1 = new Thread(UpdateBtn); thread1.IsBackground = true;//設置為后台線程,當主線程結束后,后台線程自動退出,否則不會退出程序不能結束 thread1.Start();
//線程方法,修改Button內容 private void UpdateBtn() { int i = 0; while (true) { i++; Action action1 = () => { button.Content = i; }; button.Dispatcher.BeginInvoke(action1); // 如果不設置等待,整個程序死循環 Thread.Sleep(500); } }