VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: tgy

[分享] 改良的多线程绘图演示程序,供初学多线程者学习(含源码)

  [复制链接]
 楼主| 发表于 2012-4-30 14:52:52 | 显示全部楼层
本帖最后由 tgy 于 2012-4-30 15:27 编辑
sunson 发表于 2012-4-29 23:32
tgy帮我看看附件里的测试程序,如何改成多线程的,我测试一下出错


这种情况不适宜用多线程,要懂得多线程的应用场合,一般用于大运算量和长时间循环的过程。且线程最好只使用自己线程内创建的对象,访问公共对象要进行线程同步。而你的这些类不能保证线程安全,是难以保证正确运行的。可偿试用activeDLL,不要用activeEXE

且要注意:线程中创建的对象,只要线程一结束就会被销毁。所以你的在线程中如果创建了时间对象,不保持住线程存活的话,那线程结束后就被销毁了,这样肯定达不到时间控件的作用的。
回复 支持 反对

使用道具 举报

发表于 2012-5-1 01:39:27 | 显示全部楼层
我的程序不适合用activedll,只有用activeexe,对象内会存在大量操作,如何操作占用比较多的时间,可能会造成主程序假死,所以才想着看能不能放到多线程里面处理。
回复 支持 反对

使用道具 举报

发表于 2012-5-3 19:15:57 | 显示全部楼层
麻烦看下我这个哪错了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 21:16:10 | 显示全部楼层
本帖最后由 tgy 于 2012-5-3 21:39 编辑
鸟儿飞飞 发表于 2012-5-3 19:15
麻烦看下我这个哪错了?


程序未进行线程同步,WinHttpRequest不要用定义全局,每个线程自己创建一个最好
最关键的一个问题是:MSFlexGrid1控件不是线程安全的控件(listbox也是不安全的),所以就算做了线程同步,仍然会出错
可以改用其它控件比如textbox 可能会好很多


这个是以前改的比较稳定可参考一下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2012-5-3 23:16:59 | 显示全部楼层
本帖最后由 鸟儿飞飞 于 2012-5-3 23:19 编辑
tgy 发表于 2012-5-3 21:16
程序未进行线程同步,WinHttpRequest不要用定义全局,每个线程自己创建一个最好
最关键的一个问题是: ...


ttt那个我把那2句MSFlexGrid1的注释掉后,一样的,20个线程大概运行15秒左右的时候崩溃
抓了个图

还有你下面那个压缩包,只开了3个线程,可能好点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

tgy
屏蔽得了,我说了在线程函数中加on error resume next 就OK了,  发表于 2012-5-4 08:19
这种内存泄露的错误,on error resume next是屏蔽不了的,VB多线程尤其是网络编程真是悲剧啊  发表于 2012-5-4 00:49
tgy
所以只要能抓到错误就好好解决问题了  发表于 2012-5-4 00:10
tgy
加条 on error resume next 就OK了,确认是控件内部出错导致的,你可以用 on error goto 就可看抓到错误了。  发表于 2012-5-4 00:07
tgy
这样的话可能是WinHttpRequest控件本身的问题了  发表于 2012-5-3 23:52
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-3 16:22

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表