首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

使用TThread调用存储过程,但是直接关闭程序时无法释放数据库连接,关闭失败

2012-03-30 
使用TThread调用存储过程,但是直接关闭程序时无法释放数据库连接,关闭失败,求助因此存储过程费时较长,所以

使用TThread调用存储过程,但是直接关闭程序时无法释放数据库连接,关闭失败,求助
因此存储过程费时较长,所以采用新开TThread,Thread使用DataModule调用存储过程,然后主线程不断检测线程执行情况,使得前端可以响应用户的操作。
        但是,直接点窗口的X关闭程序时,程序里已经使用GetExitCodeThread()和TerminateThread()来关闭工作线程,但是在delete   DataModule释放数据库连接时,就会block住,查看数据库,就会发现这个session一直存在。

        这种情况怎么处理呢?谢谢。

[解决办法]
在主窗口的关闭处理代码加上这些看看

....
thread.terminate;
thread.waitfor;
....
[解决办法]
同意楼上观点。在TThread的Execute方法中一定要能及时判断出Terminated属性为False的情况并且返回,以确保调用Terminate方法后能及时中止线程。本人不清楚Delphi的WaitFor性能如何,BCB的WaitFor似乎有点迟钝,但是可以接受。
[解决办法]
恩,不错,线程里面:
while(Terminate)
{
//...............
}

退出的时候先erminate,然后waitefor
[解决办法]
试试在TThread::Synchronize中释放数据库连接?

热点排行