精易论坛

标题: 线程里面列表框 标签调用反馈用法/高级表格线程防崩溃 [打印本页]

作者: 独倚斜阳    时间: 2021-5-31 22:51
标题: 线程里面列表框 标签调用反馈用法/高级表格线程防崩溃
本帖最后由 独倚斜阳 于 2021-6-1 02:25 编辑

小白可以看看 很简单的处理

原帖和原始源码在这里是超级列表框主线程和线程调用时间区别 https://125.confly.eu.org/forum.php?mod ... 6%E5%BF%AB%E9%80%9F

本例子 源码加了cpu亲和度 和线程里面利用标签反馈事件

1,CPU亲和度设置,线程里面操作超级列表框的话 我用了这个 机器没负载的情况下  线程里面写入超级列表框的速度大概比非线程慢1倍  如果不用这个线程里面写入超级列表框比非线程慢10倍,高级表格的没测试
  
SetProcessAffinityMask (-1, 1)  ' 完美
' SetProcessAffinityMask 设置进程CPU相关性 参数设置 (2018-01-05 18:39:48)转载▼
' 标签: setprocessaffinityma it 分类: API
' SetProcessAffinityMask
' 参数一:进程句柄    -1为自身句柄
' 参数二:指定CPU
' 参数二的设置是二进制转十进制。参数二需填写十进制数字
' 例如我想设置
' 1CPU二进制为1 转换为十进制为 1
' 2CPU二进制为10 转换为十进制为 2
' 3CPU二进制为100 转换为十进制为 4
' 4CPU二进制为1000 转换为十进制为 8
' 1,2CPU二进制为11 转换为十进制为 3
' 3,4CPU二进制为1100 转换为十进制为 12
' 123CPU二进制为1110 转换为十进制为 14
' 1234CPU二进制为1111 转换为十进制为 15



2,线程里面测试用超级列表框写入数据 比非线程慢很多 显示到列表框很慢  线程里面调用标签反馈  相当于 写入操作是在主线程/非线程里面进行的。
高级表格线程里面会崩溃  全部删除或者增加减少行 插入之类的操作会崩溃  同理可以这样处理  置数据不会崩溃 其他高级表格选择框按钮之类的没有测试过

  
子程序名返回值类型公开备 注
_标签1_反馈事件整数型 
参数名类 型参考可空数组备 注
参数一整数型
参数二整数型
超级列表框_导入文本 (超级列表框1, , 集_文本, “----”, 2, 真, 局_耗时2, , 局_构造耗时2)
子程序名返回值类型公开备 注
_按钮1_被单击  
标签1.调用反馈事件 (, , )


超级列表框导入.e (17.57 KB, 下载次数: 44)
刚才看到其他大佬的处理方法 好像线程里面操作高级列表没问题了?谁数据多的试一下

我自己测试 增加减少行 几分钟没问题清空数据命令 不行 刷新数据的同时乱拖滚动条几下就崩溃了

  
DLL命令名返回值类型公开备 注
API_SendMessage 
DLL库文件名:
 
在DLL库中对应命令名:
SendMessageA
参数名类 型传址数组备 注
窗口句柄整数型
标识整数型
消息1整数型
消息2整数型


  
API_SendMessage (高级表格.取窗口句柄 (), 11, 0, 0)  ' 禁止重画  /
’----------------------
’执行操作 增加删除行 置数据
‘----------------------
API_SendMessage (高级表格_可转债.取窗口句柄 (), 11, 1, 0)  ' 允许重画
高级表格.重画 ()


i支持库列表   支持库注释   
eGrid高级表格支持库


单线程里面用  多线程自己处理许可

补充:API sendmessage  线程里面操作高级列表 按上面方式 会有时候显示不出来高级列表更新的内容
我换成了 允许重画 禁止重画  刷新显示  目前不用清空数据和插入 几个小时没发现问题







补充内容 (2021-6-2 16:08):
我开始可能弄错了  这个亲和性是加到线程子程序里面的第一行 这样速度就和非线程一样快了  加到启动窗口似乎有问题不定时闪退
作者: zifeiyu    时间: 2021-6-1 08:42
..................................
作者: 枕风宿雪多年    时间: 2021-6-1 11:58
感谢分享
作者: cc66029    时间: 2021-6-2 12:35

感谢分享
作者: sampo    时间: 2021-6-2 19:52
感谢分享,很给力!~
作者: 独倚斜阳    时间: 2021-6-2 19:56
本帖最后由 独倚斜阳 于 2021-6-3 03:25 编辑

最终解决办法,高级表格线程崩溃

1,高级表格.发送消息(11,0,0)'禁止重绘        同首页我发的那个api  调用的是同一个东西
//其他改变行 置数据操作     高级表格.发送消息(11,1,0)'允许重绘
     高级表格.重画()

缺点,选择夹,高级选择夹里面的高级列表挡不住会在其他选项卡显示出来,目前用 选择夹里面套一层外形框 外形框里面放高级表格 能解 试了好久

2,用标签反馈   标签反馈里面写
如果参数1=1 那么 禁止重绘 +改变行数 ,行数线程里面用一个程序集或者全局变量去传递
如果参数1=2 那么 允许重绘   刷新显示

   
暂时没其他好办法了把

高级表格不崩溃 (1).e

4.41 KB, 下载次数: 77, 下载积分: 精币 -2 枚


作者: superlu    时间: 2021-6-3 17:30
这是学院派的 大佬
现在还是web页面的好用
作者: 独倚斜阳    时间: 2021-6-3 21:42
superlu 发表于 2021-6-3 17:30
这是学院派的 大佬
现在还是web页面的好用

你说用一个超文本框之类的显示自己构造的网页么- -那构造不会呀
作者: 易造轮    时间: 2021-6-3 23:51
反馈事件是单线程进行的,参考资料:
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14340128
使用标签反馈事件来线程载入窗口说明

作者: 独倚斜阳    时间: 2021-6-4 00:16
superlu 发表于 2021-6-3 17:30
这是学院派的 大佬
现在还是web页面的好用

老哥给个例子。。。web页面

作者: 爱易编程    时间: 2021-6-4 18:39
lovemuou 发表于 2021-6-3 23:51
反馈事件是单线程进行的,参考资料:
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14340128
使用标签 ...

不错, 多线程利用标签反馈,根本不是多线程,被欺骗多年了,希望不要造谣了!
作者: 爱易编程    时间: 2021-6-4 18:40
最简单的测试,用多线程调用浏览器组件打开一个不存在的网页,你看看界面卡不卡,如果是多线程,界面不会卡的,但是利用标签反馈的多线程,界面会假死
作者: 独倚斜阳    时间: 2021-6-4 19:38
爱易编程 发表于 2021-6-4 18:40
最简单的测试,用多线程调用浏览器组件打开一个不存在的网页,你看看界面卡不卡,如果是多线程,界面不会卡 ...

我没用标签 就是怕这个  我还是用的高级表格  用的发送消息   另外表格放外形框里 外形框放选择夹里

7*24小时 一直运行 2天了没问题
作者: 一尘天下    时间: 2021-6-12 23:17

感谢分享,很给力!~
作者: ghost12    时间: 2022-3-3 03:01
我读书少,不要骗我
作者: Diwu    时间: 2023-8-12 22:42
独倚斜阳 发表于 2021-6-2 19:56
最终解决办法,高级表格线程崩溃

1,高级表格.发送消息(11,0,0)'禁止重绘        同首页我发的那个api   ...

谢谢大哥,针对线程崩溃用禁止重画确实有效解决了
作者: sgk324    时间: 2023-8-20 22:05
学习一下,
作者: sgk324    时间: 2023-8-20 22:06
看看效果怎么样
作者: 爱易编程    时间: 2024-8-18 11:24
禁止重画
作者: HAO641019045    时间: 2024-11-9 20:26
试试效果试试效果试试效果试试效果试试效果试试效果试试效果
作者: dhrjgzs    时间: 2024-11-25 20:11
高级表格线程崩溃




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4