我用unidac 数据库访问组件在执行代码
DM.DB.Connected:=true; //DB 是 TuniConnection 后,什么操作都不作再调用:Application.Terminate;程序关闭不了,窗口虽然关了,但我看到任务栏管理器中,还有我这个程序的进程在里面我在Application.Terminate; 前前加上了DM.DB.Connected:=False;也是不行的但我把 DM.DB.Connected:=true; 注释掉后,程序就可以关闭了,进程也结束了
我就 执行了 DM.DB.Connected:=true; 其它什么都没做呢,为什么。

解决方案 »

  1.   

    上面的问题解决了现在出现了
    调用
    Application.Terminate;
    后,出现无效的窗口句柄 异常.
      

  2.   

    程序中用到了另外一个线程,但我是等线程执行完好才调用 Application.Terminate;
      

  3.   

    查了一下资料,说是可能在线程中用到了主窗口的vcl (确实用到了)
    因为我要在线程中更新一些控件的状态和值(因为线程的代码要执行挺久的,不想等线程执行完后才改控件的值,且如果放在主线程执行这段代码,整个窗口处于忙的状态,不能做任何事情),
    但我调用Application.Terminate 的时候,确定线程中所有代码都执行完了,发送一个message 给主线程,才结束的.
    因为本人接触delphi 不久,不知道要怎么要才能解决这种问题
      

  4.   

    也许是TuniConnection没配置好,它一直在尝试连接..
      

  5.   

    线程和主程序的关系:
    线程要改变主程序上的东西,目前我是使用发送消息的方式。
    如果有更好的,请教。
    否则要用线程的 SyncXXXX 那个函数,
    这个函数个人总是用的不顺手。
      

  6.   

    synchronize?新建一个线程单元时都会有一堆介绍的