WPF Dispatcher.BeginInvoke子线程更新UI

摘要:
在开发WPF应用程序时,出现以下情况:“调用线程无法访问此对象,因为另一个线程拥有它。”。

在开发WPF应用时出现:”调用线程无法访问此对象,因为另一个线程拥有该对象。“

是因为UI线程是WPF应用的主线程,若尝试子线程更新UI线程应使用Dispatcher.BeginInvoke()或者Invoke()方法。

Dispatcher.BeginInvoke() //异步执行,不等待委托结束就更新

Dispatcher.Invoke()          //代表同步执行

Action()                            //委托

this.Dispatcher.BeginInvoke(new Action(()=>
{ 
    //你的更新操作
}));

搬运转发请链接注明出处。

 

免责声明:文章转载自《WPF Dispatcher.BeginInvoke子线程更新UI》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IDEA的查询引用、调用关系图的功能ArrayList与LinkedList性能差别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF使ListBox支持手势多选功能

手势功能在手持平台应用较为丰富,PC上的应用还不是很多,不过还是有一些软件已应用这个功能如遨游浏览器等,应用得当还是相当可以丰富用户的互交体验的。 接下来我将介绍如何为ListBox添加手势功能支持。 这里我们用到了InkCanvas,它有一个Gesture事件,在这个事件中我们可以得到我们所画出的形状的区域及 e.Strokes[0].GetGeomet...

Golang(三)Goroutine原理

前言 最近用到了一些 Golang 异步编程的地方,感觉 Golang 相对于其他语言(如 Java)对多线程编程的支持非常大,使用起来也非常方便。于是决定了解一下 Goroutine 的底层原理。 Goroutine 本质是协程,是实现并行计算的核心。只需要在对应的函数前加上 Go 关键词即可异步执行: go func() { }() 基本概念...

卡顿问题

导致卡顿问题的几种原因: 复杂 UI 、图文混排的绘制量过大; 在主线程上做网络同步请求; 在主线程做大量的 IO 操作; 运算量过大,CPU 持续高占用; 死锁和主子线程抢锁。 FPS 是一秒显示的帧数,也就是一秒内画面变化数量。当FPS达到60,说明界面很流程,当FPS低于24,页面流畅度不是那么流畅。 线程的消息 事件是依赖于 NSRunLoop...

31 多线程(四)——线程优先级

优先级概念 线程的优先级可以让线程获得高概率或低概率的cpu调度机会。不是绝对的优先,只是高优先级会被优先调用。 优先级为1-10,最低为1,最高为10,默认为5。可以自行设置值。 设置优先级必需在线程start()之前。 Thread类的优先级常量 MAX_PRIORITY        10 MIN_PRIORITY         1 NORM_...

WPF绑定功能常用属性介绍

1.Mode 绑定中数据流的方向(enum BindingMode) 目标属性指的是控件的属性 (1)TwoWay 更改源属性或目标属性时,会自动更新另一方。适用于可编辑窗体 例:TextBox (2)OneWay 更改源属性时会自动更新目标属性。适用于隐形只读窗体 例:Label 可避免 System.Windows.Data.BindingMode.T...

java内存区域

  java虚拟机里内存都放了些啥东东呢?看图:   从上图我们可以看到,有:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)。其中标黄的是线程私有的内存区域,标蓝的是公共内存区域。那它们都是干啥的呢?  ...