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

当ADOConnection控件在连接一个Data Source不存在的ConnectionString时,怎样才能避免程序长时间无响应?解决思路

2012-02-24 
当ADOConnection控件在连接一个Data Source不存在的ConnectionString时,怎样才能避免程序长时间无响应?如

当ADOConnection控件在连接一个Data Source不存在的ConnectionString时,怎样才能避免程序长时间无响应?
如题。BCB5下,Data   Source中指定的数据库文件不存在时,我把ADOConnection控件的ConnectTimeOut和CommandTimeOut这两个属性都设得很小也没有用,每次只要一执行ADOConnection1-> Connected=true时,程序就会假死40多秒。请问:如何在这种情况下,如何让ADOConnection不要再浪费时间在无谓的连接上?

[解决办法]
那先用FileExists()判断文件是否存在
[解决办法]
一般不要直接ADOConnection1-> Connected=true
先执行下面再true
if(FileExists(完整文件名))
{
ADOConnection1-> Connected=true
}
[解决办法]
我用BCB6.0测试了一下,将ConnecitonTimeout设为3s,停掉SQL Server的服务,然后用ADOConnection去连接,差不多15s会有检测到异常。

避免程序无响应,你可以把连接数据库放到另一个线程去做;如果要自己控制连接超时,可以用定时器,唉,似乎都不是什么好办法
[解决办法]
BCB与DELPHI的最大毛病就是多线程支持不好!
[解决办法]
up
[解决办法]
你自己做個線程把AdoConnect放進去
[解决办法]
很早时写的,现在一般不这样做了,因为原是使用 TClicntSocket 组件,若是使用 TIdTCPClient 控件,完全可以不用写线程,原理一样,可以参考一下:

http://blog.csdn.net/sczyq/archive/2004/11/12/178227.aspx

热点排行