关于DLL中创建、执行、关闭线程的问题!!!(200分)

  • 主题发起人 主题发起人 呆子12
  • 开始时间 开始时间

呆子12

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的一个DLL中有一个FORM和一个线程,线程可以通过FORM上的一个按钮或FORM
关闭时停止,但如果在线程(通过FORM打开,并使用FORM上的一些控件)正在运行,
这时调用这个DLL的主程序关闭(这时没有关闭FORM),FORM也会随之关闭,好象
线程也FREE掉了,可是内存中还驻留有一些东西,因为主程序已经退出了,可是无
法删除这个DLL,系统报:指定的文件正被WINDOWS使用。
 
对象创建就要释放,否则会出现内存泄露。
所以在你的Dll中创建了对象就应当在其中释放它,或者发消息给主应用程序由它来释放。
如果在Dll中释放的话最好放在form的Destroy中而不是close,因为可能出现这种情况:
既若该form是非模式窗体,在主应用程序中显示了form却没有关闭form而直接退出应用
程序,这时form的close事件就没做,而直接调用了destroy。
如果是模式窗体的话可以放在close中。
另外,在Dll中一定要将外面的Handle传进交给内部的Handle.而且要在撤消的时候判断
对象的存在与否。(这样即可以保证应用程序的稳定,而且可以防止创建多个实例)
 
感谢 charlie chen !!!
如果一个线程中含有一个比较耗时的查询,当这个查询还没有完成,就想关闭
线程,怎样完成。
 
TThread.WaitFor
 
多人接受答案了。
 
后退
顶部