WPF:解决 调用线程无法访问此对象,因为另一个线程拥有该对象。问题

调用线程无法访问此对象,因为另一个线程拥有该对象问题,这种情况往往很常见,比如:说Timers和DoubleAnimation也就是计时器和动画一起使用就会出来这个错误。

其实加上一句话就行了,作用是:将要执行的操作调度到 UI 线程上执行。
这样做可以确保在 UI 线程上执行操作,避免跨线程访问 UI 元素引发的异常。
另外, this.Dispatcher.Invoke 方法并不是异步的,它会阻塞当前线程直到操作执行完成。
如果需要异步执行操作,可以考虑使用 this.Dispatcher.BeginInvoke 方法或者使用 Task.Run 方法来在后台线程执行操作。


this.Dispatcher.Invoke(new Action(delegate{
     //要做的事
}))

实现该问题及解决办法

   1:下面写的是一个使用计时器去定时执行动画的逻辑:

   2:其实也就是实现一个,让页面产生一个随机数,然后同时2秒去控制下整个页面的一个显示及隐藏。

页面代码:

   3:问题出现:调用线程无法访问此对象,因为另一个线程拥有该对象问题?

  4:问题解决:这个问题感觉也就是相当于,派一个人不能同时去执行多个事,不能一心二用的意思吧。

 在一个Timers事件里面,让它去异步执行,问题就可以解决

5:然后改完运行,问题不存在了,完全是按照自己的逻辑去实现的。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值