Dispatcher.Invok是WPF中特有的。使用方法如下
1)创建一个“WPF 引用程序”
2)在Window1.xaml中添加一个Label
3)在后台代码Window1.xaml.cs中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | using System; using System.Windows; using System.Threading; namespace WpfApplication3 { /// <summary> /// Window1.xaml 的交互逻辑 /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); // 启动一个后台线程 Thread t = new Thread(WorkThread); t.IsBackground = true ; t.Start(); } // 后台线程 void WorkThread() { while ( true ) { // 利用Dispacther.Invoke调用更新labelClock显示的内容 // 按WPF规定:labelClock是由主线程创建的。要想在后台线程 // 中刷新主线程创建的控件,必须通过Dispatcher.Invoke(...) // 来实现! this .Dispatcher.Invoke( new Action(() => labelClock.Content = DateTime.Now.ToString( "HH:mm:ss" )), System.Windows.Threading.DispatcherPriority.Render); // 后台线程停顿1秒 Thread.Sleep(1000); } } } } |
4)运行结果
原文地址:https://zhidao.baidu.com/question/139761455738845245.html