递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 246|回复: 4
打印 上一主题 下一主题

[视窗] 求助!!!"启动有状态线程"崩溃

[复制链接]

1

主题

17

帖子

131

积分

注册会员

Rank: 2

积分
131
跳转到指定楼层
楼主
发表于 昨天 07:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序

类 启动类 <公开 基础类 = 动态库程序类>
{
    变量 线程状态 <类型 = 线程状态类>

    方法 启动方法 <公开 类型 = 整数>
    {
        启动有状态线程 (线程状态, 线程测试函数, 262144, )
        返回 (1)
    }

    方法 线程测试函数 <静态>
    参数 线程状态对象 <类型 = 线程状态类>
    {
        全局信息框 ("我是线程测试函数", , , )
    }
}



在火山视窗DLL的启动方法里执行 "启动有状态线程" 直接崩溃,改用启动线程就没事。有没有大佬告知下原因
回复

使用道具 举报

460

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
44247
沙发
发表于 昨天 07:55 | 只看该作者
线程里面不要弹出信息框。也不要操作任何组件。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

1

主题

17

帖子

131

积分

注册会员

Rank: 2

积分
131
板凳
 楼主| 发表于 昨天 08:09 | 只看该作者
创世魂 发表于 2025-6-25 07:55
线程里面不要弹出信息框。也不要操作任何组件。
  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 包 火山.程序

  3. 类 启动类 <公开 基础类 = 动态库程序类>
  4. {
  5.     变量 线程状态 <类型 = 线程状态类>

  6.     方法 启动方法 <公开 类型 = 整数>
  7.     {
  8.         启动有状态线程 (线程状态, 线程测试函数, , )
  9.         返回 (1)
  10.     }

  11.     方法 线程测试函数 <静态>
  12.     参数 线程状态对象 <类型 = 线程状态类>
  13.     {
  14.         // 全局信息框 ("我是线程测试函数", , , )
  15.     }
  16. }
复制代码

线程函数里不写任何代码也会崩溃。
只有在DLL的启动方法里调用"启动有状态线程"才会这样。
如果是EXE就不会,但是DLL启动方法里改成使用"启动线程"又正常了
回复

使用道具 举报

29

主题

2352

帖子

8390

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8390
地板
发表于 昨天 09:24 | 只看该作者
测试了一下,并非不能在DLL里使用,而是不能在DLL的启动方法里使用。
可能是启动有状态线程用了些不能在dll入口函数里使用的API吧。
换其他方法吧,这个有状态线程也不好用。建议PIV或仰望模块的“启动静态线程”,传参也更简单。
回复

使用道具 举报

30

主题

360

帖子

2624

积分

金牌会员

Rank: 6Rank: 6

积分
2624
5#
发表于 昨天 22:04 | 只看该作者
DllMain中有诸多限制, "启动有状态线程"创建线程之后,  内部调用了WaitForSingleObject, 导致死锁.

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-6-26 14:09 , Processed in 0.095910 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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