提个小问题,关于Thread和dll.

myy 2005-10-11 09:33:37
exe通过LoadLibrary和GetProcAddress调用dll中的一个函数,这个函数,
用CreateThread创建了一个线程并启动,线程入口函数为dll中的另一个
函数,线程会运行很长时间。

我的问题是:
如果exe在完成上面的工作后,直接调用FreeLibrary释放dll,那么创建的线程
还会继续执行吗?

我在win2kpro+delphi6下的实验结果是:
线程会继续执行,直到它自己返回,(为了证明FreeLibrary确实释放了dll,
我甚至把dll删除了),这让我很不解,这是操作系统的正常行为吗?

哪位高手能解释一下,谢谢了。
...全文
555 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SydPink 2005-10-17
  • 打赏
  • 举报
回复
吓人啊~
很土 2005-10-14
  • 打赏
  • 举报
回复
ocx 不是普通的 dll, 是 COM, 涉及 COM 的导出
myy 2005-10-14
  • 打赏
  • 举报
回复
to kyee(浪子阿鹏) :

从可执行模块的角度来看,ocx与普通的dll并没有区别,入口点都是

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
Larry1030 2005-10-14
  • 打赏
  • 举报
回复
学习学习
myy 2005-10-13
  • 打赏
  • 举报
回复
虽然这个测试我犯了低级错误,但是,也让我明白了 IE 加载和卸载 Ocx 的一些“内幕”,
我以前以为当访问包含Ocx(Ocx本质上也是dll)的html页面时,IE 只是简单的LoadLibrary,
离开页面时FreeLibrary,现在看来,其实它做了一些跟踪的工作......
merkey2002 2005-10-13
  • 打赏
  • 举报
回复
哈哈,来捡分
很土 2005-10-13
  • 打赏
  • 举报
回复
是一个比较低级的错误, 线程控制不好会产生整个进程的非法退出.
linzhengqun 2005-10-13
  • 打赏
  • 举报
回复
检分了。
Blakhawk 2005-10-13
  • 打赏
  • 举报
回复
学习学习,顺便捡点分子。
猛禽 2005-10-12
  • 打赏
  • 举报
回复
哈哈,我就说嘛.^O^
myy 2005-10-11
  • 打赏
  • 举报
回复
汗啊!

还是我自己犯了低级错误,我在dll中CreateThread后,
***我忘了调用ResumeThread启动线程***,修改代码后,
调用FreeLibrary,exe会报错自动退出......

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧