如何使用C#的方法 Dispatcher.Invoke =>

 我来答
freeeeeewind
推荐于2018-03-07 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1360万
展开全部

Dispatcher.Invok是WPF中特有的。使用方法如下

1)创建一个“WPF 引用程序”

2)在Window1.xaml中添加一个Label

3)在后台代码Window1.xaml.cs中

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)运行结果

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式