高手救急,当我在程序最后执行了Application.Terminate 以后,程序报错,不知何故,时有时无,在线等待!(Terminate后程序做了哪些事呀?)

alenmin 2003-09-29 06:12:00
高手救急,当我在程序最后执行了Application.Terminate 以后,程序报错,不知何故,时有时无,在线等待!(Terminate后程序做了哪些事呀?)
...全文
51 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maple119 2003-09-30
  • 打赏
  • 举报
回复
是不是你使用的 TADOConnect??????连接在没有连接过的情况下关闭的呢????

我遇到这种情况.
tongki 2003-09-30
  • 打赏
  • 举报
回复
学习啊!
FrameSniper 2003-09-30
  • 打赏
  • 举报
回复
偶学习!
IORILI 2003-09-30
  • 打赏
  • 举报
回复
我喜欢看高手的意见:)
alenmin 2003-09-30
  • 打赏
  • 举报
回复
用Exitprocess(1)就行了.
ehom 2003-09-29
  • 打赏
  • 举报
回复
Free只是释放线程实例,但和线程终止没有必然联系.

为什么Free会释放线程?因为在TThread的析构函数中会调用Terminate;

Terminate中会改变标记成员变量FTerminated := True;

接着通过在Execute中的适当位置执行if Terminated then Exit结束线程.

否则就只能利用API TerminateThread强制结束了.

好好看看帮助中的例子吧,如果能熟习Windows的机制,再阅读部分VCL代码,比较容易找到这类问题的关键所在.
甜而不腻 2003-09-29
  • 打赏
  • 举报
回复
Free线程,和在线程里调用Application.Terminate冲突.
只要一个就可以了.
因为2个效果相同调用2个相当于重复调用,然后形成一个死循环.
如果在线程中,那么你会内存泄露,直到程序完蛋为止.
alenmin 2003-09-29
  • 打赏
  • 举报
回复
猜得非常正确!
不过我已经先Free了线程,再Application.Terminate的,还是不行!
vcshcn 2003-09-29
  • 打赏
  • 举报
回复
你是不是在程序中用了线程

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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