开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 369|回复: 0
收起左侧

[求助] 多线程gdi绘制问题求答疑

[复制链接]
结帖率:95% (21/22)
发表于 2023-11-29 02:05:44 | 显示全部楼层 |阅读模式   广东省广州市
多线程辅助支持库
https://bbs.125.la/forum.php?mod ... A%E7%BA%BF%E7%A8%8B
只用了  启动线程_任意文本参 命令 是不是有bug还是使用不当,请大神们指点!
思路是:gdiplus先画内存图,然后拷贝到画板上。(双缓冲滚动条已经处理好了,不存在问题)

问题:
1、gp内存图形里面先画好3列*1000行的方形线格 ,然后开始写文本。
2、3个数组  每个数组的元素数量都是1000,如:数组1[8]=1000 传进子程序内分割成新数组
3、3个数组是自定义类型里的数组,全局变量,传递进子程序里转换成了局部变量
4、代码如下:
启动线程_任意文本参(&子程序1,数组1[8],文本1,文本2,文本3....)         ‘这3个子程序都是一样功能循环gdi内存图形上写文本
启动线程_任意文本参(&子程序2,数组2[8],文本1,文本2,文本3....)
启动线程_任意文本参(&子程序3,数组3[8],文本1,文本2,文本3....)

子程序1==================
进入许可区
转换成新数组
计次循环首(成员数,i)
           启动线程_任意文本参(&下一级子程序,新数组,文本i,文本4,文本5....)
计次循环尾()
退出许可区
返回()
下一级子程序==============
进入许可区
内存图形。写文本(新数组,算矩形坐标......)
退出许可区
返回()
线程等待==========
拷贝到画板
***********************************************

调试时就出了问题,画板显示第1列写完全了,第2列写到7成,第3列写了偶尔几个甚至没有写
测试直接输出内存图形图片也是一样,说明图片就是没写完。
针对问题
取消3个子程序的多线程调用,直接子程序调用时间是长了但是的确写完整了3列,说明写法应该是没有问题。
我又用其他数据调试多线程调试,结果完全没有问题。
又转回多线程1000数据,结果还是一样,最后突然无聊猜数字游戏,
经过无数次调试,发现数组元素到946和947之间截然不同。
数组元素=946时 完美写入 秒出
数组元素=947时 直接卡死界面 画板无任何显示(没有再内存图形输出图片测试了)

请问是什么原因呢还是这个支持库本身有问题?
1、线程等待用了WaitForMultipleObjects 和精易 线程_等待 946以下返回=0说明是没有问题
2、和双缓冲没关系
3、测试常用_完美延时 ()也没有区别。临界还不知道怎么用待研究,不清楚是不是内存问题。
4、之前写过画满32627也就是1550行*20高没有问题,说明和内存图形和画板没有关系
请大神们指点到底是啥问题?

现在代码是用了自带命令+精易命令+多线程辅助支持库,感觉特混乱。
精易参数不够,自带不支持多参,多线程支持库又貌似出问题。
难道真的只有走 把多参整成自定义类型或数组传指针进去 和 鱼刺 的道路了吗?
谁有能传多参或传自定义或数组的多线程池例子发一个研究研究。论坛搜索了好多次头晕了
谢谢

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表