递归火山软件开发平台

标题: 火山视窗多线程写的循环运行一个多小时就会自动崩溃 [打印本页]

作者: 傻白甜    时间: 2023-9-5 16:13
标题: 火山视窗多线程写的循环运行一个多小时就会自动崩溃
本帖最后由 傻白甜 于 2023-9-6 17:54 编辑

话不多说直接上代码吧。有点简陋麻烦大神凑合看帮分析一下。


如果(来源对象=按钮一)
  循环(超级列表框1.取标项数(),i)
     线程启动(取静态方法地址(主程序),i)

下面是主程序

如果(读配置项(“时间”,"现在","配置.ini")!=取小时(取现行时间()))
    延时(5000)
    超级列表框1.置标题(1,2,“时间不对”)
    写配置项(到文本(取小时(取现行时间())),“时间”,"现在","配置.ini")
否则
    超级列表框1.置标题(1,2,“时间正确”)



主程序(i)


不知道这样写是哪里出来问题,按照这个流程下来运行没问题但是一个小时左右就直接崩溃了。请大神指点一二,项让这个主程序这样循环怎么才会不崩溃

调试输出的时候有退出码,0x000000FD。我怀疑是递归太深造成的,这样的话应该如何解决呢?

作者: 459943578    时间: 2023-9-5 16:45
超级列表框前后加个锁搞定
作者: b0y    时间: 2023-9-5 17:01
多线程操作组件 最好发消息  然后在主线程里操作
作者: 傻白甜    时间: 2023-9-5 18:33
b0y 发表于 2023-9-5 17:01
多线程操作组件 最好发消息  然后在主线程里操作

法消息是什么意思 刚接触不太懂
作者: 傻白甜    时间: 2023-9-5 18:35
459943578 发表于 2023-9-5 16:45
超级列表框前后加个锁搞定

我先测试试试

作者: hmyroot    时间: 2023-9-5 20:23
b0y 发表于 2023-9-5 17:01
多线程操作组件 最好发消息  然后在主线程里操作

列表框好像不能用SendMessage()来插入表数据
作者: desk    时间: 2023-9-5 20:54
线程不能操作组件 操作组件 崩溃 几率很高的
作者: desk    时间: 2023-9-5 20:55
你的用,取程序().窗口对象.组件名称
作者: tmf19901124    时间: 2023-9-5 21:17
线程里面操作窗口,不崩溃才不正常
作者: Xelloss0618    时间: 2023-9-5 21:42
hmyroot 发表于 2023-9-5 20:23
列表框好像不能用SendMessage()来插入表数据

用 高级主线程处理器
作者: urenai    时间: 2023-9-5 23:37
说的对,线程不能直接处理组件,会出现各种bug。

作者: 创世魂    时间: 2023-9-6 08:10
线程里面不能操作组件
作者: 傻白甜    时间: 2023-9-6 08:40
创世魂 发表于 2023-9-6 08:10
线程里面不能操作组件

不能操作组件的话,我该用什么方法来操作,例如编辑框,读写ini配置项
作者: b0y    时间: 2023-9-6 13:32
hmyroot 发表于 2023-9-5 20:23
列表框好像不能用SendMessage()来插入表数据

视窗自带例程里 :
杂类-多线程-线程池 面有标签反馈事件更改组件属性的示例
杂类-多线程-高级主线程处理器  有高级主线程处理器来控制组件的示例

作者: 呵呵仙8    时间: 2023-9-6 15:56
操作组件时加许可证按理不会出问题吧!
作者: tmf19901124    时间: 2023-9-6 18:50
需要同步的用SendMessage,异步的用PostMessage   然后在火山的消息过滤事件里面去直接操作窗口
作者: 傻白甜    时间: 2023-9-7 10:22
tmf19901124 发表于 2023-9-6 18:50
需要同步的用SendMessage,异步的用PostMessage   然后在火山的消息过滤事件里面去直接操作窗口 ...

这就有点难了啊。我刚接触还搞不懂呢
作者: alexqj    时间: 2023-9-7 23:03
傻白甜 发表于 2023-9-7 10:22
这就有点难了啊。我刚接触还搞不懂呢

参考这个,应该够用了
杂类-多线程-线程池 面有标签反馈事件更改组件属性的示例
作者: hmyroot    时间: 2023-9-7 23:24
Xelloss0618 发表于 2023-9-5 21:42
用 高级主线程处理器

没用过这种方法,等有空试试
作者: hmyroot    时间: 2023-9-7 23:26
b0y 发表于 2023-9-6 13:32
视窗自带例程里 :
杂类-多线程-线程池 面有标签反馈事件更改组件属性的示例
杂类-多线程-高级主线程处理 ...

等有空研究一下,我以前用易语言加许可证多线程插入表项也非常稳定




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4