我用unidac 数据库访问组件在执行代码
DM.DB.Connected:=true; //DB 是 TuniConnection 后,什么操作都不作再调用:Application.Terminate;程序关闭不了,窗口虽然关了,但我看到任务栏管理器中,还有我这个程序的进程在里面我在Application.Terminate; 前前加上了DM.DB.Connected:=False;也是不行的但我把 DM.DB.Connected:=true; 注释掉后,程序就可以关闭了,进程也结束了
我就 执行了 DM.DB.Connected:=true; 其它什么都没做呢,为什么。
DM.DB.Connected:=true; //DB 是 TuniConnection 后,什么操作都不作再调用:Application.Terminate;程序关闭不了,窗口虽然关了,但我看到任务栏管理器中,还有我这个程序的进程在里面我在Application.Terminate; 前前加上了DM.DB.Connected:=False;也是不行的但我把 DM.DB.Connected:=true; 注释掉后,程序就可以关闭了,进程也结束了
我就 执行了 DM.DB.Connected:=true; 其它什么都没做呢,为什么。
调用
Application.Terminate;
后,出现无效的窗口句柄 异常.
因为我要在线程中更新一些控件的状态和值(因为线程的代码要执行挺久的,不想等线程执行完后才改控件的值,且如果放在主线程执行这段代码,整个窗口处于忙的状态,不能做任何事情),
但我调用Application.Terminate 的时候,确定线程中所有代码都执行完了,发送一个message 给主线程,才结束的.
因为本人接触delphi 不久,不知道要怎么要才能解决这种问题
线程要改变主程序上的东西,目前我是使用发送消息的方式。
如果有更好的,请教。
否则要用线程的 SyncXXXX 那个函数,
这个函数个人总是用的不顺手。