C# WPF解决“调用线程无法访问此对象,因为另一个线程拥有该对象”

本文介绍了一种在WPF应用程序中使用后台线程结合Dispatcher实现按钮状态实时更新的方法,解决了因主线程阻塞导致的界面响应问题。

本意,是想用变量来控制按钮的IsEnable,但是发现要么没法实时控制,要么报错:调用线程无法访问此对象,因为另一个线程拥有该对象

后来问了领导,领导说要用dispatcher,查了下英语单词是n,调度员;[计] 调度程序;[计] 分配器

意思,话不多说直接上代码:

  private void Window_Loaded(object sender, RoutedEventArgs e)
        {

Thread thread = new Thread(SampletubeButtonStateSet);//20221114新开后台线程
            thread.IsBackground = true;
            thread.Priority = ThreadPriority.Lowest;
            thread.Start();

      }

 public void SampletubeButtonStateSet()
        {
            while (true) //将要实时刷新的代码放在while去实时扫描
            {
                App.Current.Dispatcher.BeginInvoke((System.Action)(() =>    //用这个方法给它实时刷新
                {
                    if (GlobalPara.Isrunning == true)
                    {
                        this.试管切换.IsEnabled = false;
                    }
                    else
                    {
                        this.试管切换.IsEnabled = true;
                    }
                }));
               Thread.Sleep(10);
              
            }             
                   
           
        }           

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值