导航
  • 主页
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API
  • 问答

vb.net 多线程 同时访问同一个数组的问题

ttsffgg 2013-12-26 10:42:30
vb.net 2012
窗体和BackgroundWorker 共两个线程

两个线程同时访问位于窗体代码中定义的一个数组,涉及到的操作为赋值,redim等

这种做法可行吗?

我这样做的时候发现经常会出现读取错位,比如BackgroundWorker正在对数组进程操作时,窗体进程读取数组(0)的值时,实际得到的却是数组(1)的值


那么以下哪种说法正确?
1 不应该两个进程同时操作同一个数组,这种做法肯定是错的.

2 可以两个进程同时操作同一个数组,是我技术好导致错误.(如果是这样,能否大概指个方向)


谢谢了
...全文
214 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttsffgg 2013-12-29
引用 4 楼 devmiao 的回复:
http://msdn.microsoft.com/zh-cn/library/dd997305(v=vs.110).aspx
谢谢提点:)
回复
ttsffgg 2013-12-29
引用 1 楼 sp1234 的回复:
操作同一个数组的业务逻辑是什么? 设计业务逻辑时,要考虑到数组会被重定义大小的问题。在特定的代码中要“管理线程”并发,也就是要lock。
实际情况是一个二维数组中的数据需要经过两个步骤的处理,得到最后需要的结果 所以我的想法是,在后台弄一个线程出来进行第一个步骤的处理,每处理一些就通知一下窗体线程有一部分处理好了,然后窗体线程就去对这部分数据进行第二步骤的操作
回复
嗯,我说的不是现学现卖的什么操作系统“使用说明”一类的书。这方面的教科书,至少有一、两个月的教学时间,都在讲“进程、线程、管程、管道、同步、信号量”等等概念,这就好象是厨师要先学认识厨具一样。
回复
看你的描述,可能你需要找本操作系统的教材看看。
回复
操作同一个数组的业务逻辑是什么? 设计业务逻辑时,要考虑到数组会被重定义大小的问题。在特定的代码中要“管理线程”并发,也就是要lock。
回复
ufoamani 2013-12-27
学习下多线程
回复
devmiao 2013-12-27
http://msdn.microsoft.com/zh-cn/library/dd997305(v=vs.110).aspx
回复
发动态
发帖子
VB
创建于2007-09-28

1.5w+

社区成员

VB技术相关讨论,主要为经典vb,即VB6.0
申请成为版主
社区公告
暂无公告