请问C#里多线程共享数据的问题

darkeria 2012-10-10 03:00:31
大家好,我写的WPF程序里加了一个后台线程用来采集数据,需要传人一个Model当做调用数据采集函数的参数,但是这个Model又有一些属性需要在图形界面当中刷新。因此碰到了共享数据的问题。

我现在的做法是每次开始采集之前建一个这个Model的深拷贝送进采集数据的线程,然后采完了再赋值给原先的Model,但是每次采集都要先申请个深拷贝总感觉不太舒服,如果我把这个Model跟Model的拷贝能像值类型那样固定下来不用分配空间就好了。

不知道这种情况大家一般怎么解决呢?
...全文
373 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vssvss 2012-10-11
  • 打赏
  • 举报
回复
可以用backgroundworker 来实现
darkeria 2012-10-11
  • 打赏
  • 举报
回复
你的意思是我在数据采集的线程里访问UI组件是吗?
  • 打赏
  • 举报
回复
之前我开过帖子讨论过这个问题,虽然有几种能够实现的做法,但不是线程安全的,还是在自己的线程中取得数据,然后再ui线程中更新ui的好。另外不明白你为什么要深拷贝一个来传值,
只要model不直接操作画面ui,线程中是可以直接对这个直接操作的
niss 2012-10-10
  • 打赏
  • 举报
回复
这个不是共享的问题,只是UI不能跨线程访问的限制,你需要用Invoke来保证UI的组件被跨线程访问
ViewStates 2012-10-10
  • 打赏
  • 举报
回复
为什么要DEEP CLONE?
风之影子 2012-10-10
  • 打赏
  • 举报
回复
hashtable

109,895

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧