WPF:谈谈各种多线程去修改或访问UI线程数据的方法http://www.cnblogs.com/mgen/archive/2012/03/10/2389509.html 子线程非法访问UI线程的数据,会产生如下错误: InvalidOperationException:The calling thread cannot access this object because a different thread owns it. 这是由于UI线程的数据不能直接被其他线程访问或者修改. 解决方案:
有这样一个场景,在vm中,我们为了ui的体验,会异步访问后端接口,获取数据集合,如果这个集合绑定到界面,并且在线程内,怎么处理? 有人讲:this.Dispatcher.Invoke,如果在vm内呢? 有人讲:Application.Current.Dispatcher.Invoke 每个集合都包起来?不太舒爽吧.. 这里有个更好的方案介绍给大家,就是SynchronizationContext,同步上下文. 基于WPF的ObservableCollection扩展 public class
WPF下使用进度条也是非常方便的,如果直接采用循环然后给ProcessBar赋值,理论上是没有问题的,不过这样会卡主主UI线程,我们看到的效果等全部都结束循环后才出现最后的值. 所以需要采用线程或者后台方式给进度条赋值的方式,以下通过线程来触发事件触发的方式来实现给进度条赋值.这样就可以模拟我们在实际过程中处理数据的一种进度方式. using System; using System.Collections.Generic; using System.Linq; using System.Tex
最新文章:Virson's Blog 首先要感谢yk000123的慷慨开源,开源地址见:http://doubanfm.codeplex.com/ 最近正好在学习WPF,然后在Codeplex上找到了用WPF写的DoubanFM的客户端,抱着练练手的心态,着手研究代码,研究了一段时间后,准备自己加一个新功能(新功能是关于下载的,但是由于豆瓣官方版权的原因,抱歉没法为博友们提供下载,敬请谅解),于是就有了如下的问题: 在使用ThreadPool.QueueUserWorkItem()方法开始后台下