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

解决方案 »

  1.   

    猜得非常正确!
    不过我已经先Free了线程,再Application.Terminate的,还是不行!
      

  2.   

    Free线程,和在线程里调用Application.Terminate冲突.
    只要一个就可以了.
    因为2个效果相同调用2个相当于重复调用,然后形成一个死循环.
    如果在线程中,那么你会内存泄露,直到程序完蛋为止.
      

  3.   

    Free只是释放线程实例,但和线程终止没有必然联系.为什么Free会释放线程?因为在TThread的析构函数中会调用Terminate;Terminate中会改变标记成员变量FTerminated := True;接着通过在Execute中的适当位置执行if Terminated then Exit结束线程.否则就只能利用API TerminateThread强制结束了.好好看看帮助中的例子吧,如果能熟习Windows的机制,再阅读部分VCL代码,比较容易找到这类问题的关键所在.
      

  4.   

    是不是你使用的 TADOConnect??????连接在没有连接过的情况下关闭的呢????我遇到这种情况.