关于dll自动卸载的问题
我现在遇到了一个问题,我给别人写了一个插件,这个插件是dll文件。dll被加载后会被调用,调用后会在dll内部启动一个线程,这个线程指向的函数是一个死循环,现在出现的问题就是他们的系统关闭后由于dll里面的循环没退出导致程序无法退出。我在dll里面怎么捕捉结束退出信号?能捕捉到这个信号我就可以停止循环变量了
启动有状态线程:噜阿噜
试试在DLL_PROCESS_DETACH中设置退出信号, 在死循环中检测 跳出循环 570152847 发表于 2025-12-10 17:46
试试在DLL_PROCESS_DETACH中设置退出信号, 在死循环中检测 跳出循环
你这个办法时唯一的。
唯二的办法就是 直接 终止进程 570152847 发表于 2025-12-10 17:46
试试在DLL_PROCESS_DETACH中设置退出信号, 在死循环中检测 跳出循环
火山编程怎么使用这个呢?我看这个好像是一个dll函数 qzuser123ss 发表于 2025-12-11 15:29
火山编程怎么使用这个呢?我看这个好像是一个dll函数
火山编程怎么使用这个呢?我看这个好像是一个dll函数 <火山程序 类型 = "通常" 版本 = 1 />
类 启动类 <公开 基础类 = 动态库程序类>
{
变量 线程 <类型 = 线程类>
方法 启动方法 <公开 类型 = 整数>
{
线程.启动 ()
返回 (1)
}
方法 将被卸载 <公开 @虚拟方法 = 可覆盖>
{
线程.停止 ()
父对象.将被卸载 ()// 调用基础类中的被覆盖虚拟方法
}
方法 线程类_线程运行 <接收事件 类型 = 整数>
参数 来源对象 <类型 = 线程类>
参数 标记值 <类型 = 整数>
{
如果 (来源对象 == 线程)
{
判断循环 (来源对象.是否需要退出 (1000) == 假)
{
// 循环执行代码
}
}
返回 (0)
}
}
Xelloss0618 发表于 2025-12-11 15:47
类 启动类
也就是我把这个类设为全局类,然后对方调用的方法里面启动这个线程,外部结束时这个类会收到被卸载的通知? qzuser123ss 发表于 2025-12-11 15:48
也就是我把这个类设为全局类,然后对方调用的方法里面启动这个线程,外部结束时这个类会收到被卸载的通知 ...
主要看启动类里的“将被卸载”,DLL被卸载时会执行里面的方法,你在里面结束线程就行了。
结束线程的方法很多,我这里用线程类只是提供一个思路。
页:
[1]