请问如何立即终止ADOConnection连接??

zhuifeng1018 2008-10-15 11:02:34
我采用的是ADOConnection的异步连接方式,用一个Timer去循环判断ADOConnection的State属性状态以确定是否已连上数据库。在连接的服务器不存在的时候,也就是在ADOConnection的State=stConnecting状态时,我用了ADOConnection的Cancel方式去终止此连接,但发现并不能立即终止接连,原因是Cancel的执行时间不确定(不管在什么时间点终止连接,从开始连接到Cancel执行完的时间正好是ConnectionTimeout的时间值)。
不知道在异步的情况下,用什么方式能立即有效的终止连接呢?
谢谢大家!
...全文
202 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuifeng1018 2008-11-06
  • 打赏
  • 举报
回复
都差点忘了这个帖了,我后来用的是在Form的Close事件里将窗体隐藏了,然后等它自己去Cancel连接,自动就结束了该进程。不过给用户的感觉是一关闭就凑效了,呵呵
水爱死迪恩 2008-10-18
  • 打赏
  • 举报
回复
学习了 直接从根上解决
qkhhxkj102 2008-10-17
  • 打赏
  • 举报
回复
学习
DreamMan81 2008-10-17
  • 打赏
  • 举报
回复
如果要立即终止连接的话,可以先遍历所有当前
用到此连接的数据集主件,通通关掉;
或者直接application.terminated;
fangsp 2008-10-15
  • 打赏
  • 举报
回复
ADOConnection1.Connected := false ;
suton 2008-10-15
  • 打赏
  • 举报
回复
呵呵,我也是,异步方式后,如果连不上,超时设置很长的时候, 在连接过程中,发现主窗口关不掉.
也想找个办法,主动去终止连接,发现不行.

后来搞烦了,如果关闭主窗口时,提示后,直接:ExitProcess
zhuifeng1018 2008-10-15
  • 打赏
  • 举报
回复
ConnectionTimeout设短了话,不知道会不会影响正常的连接时间,我设的是20s,如果服务器不在局域网中,一般设成多少最合适呢?
五维思考 2008-10-15
  • 打赏
  • 举报
回复
想不出更好的办法,把ConnectionTimeout设短一点
zhuifeng1018 2008-10-15
  • 打赏
  • 举报
回复
楼上两位说的方法我都试过了,结果和用Cancel一样,不能达到立即终止的效果啊。
不知道还有什么方法能实现呢?
helodd 2008-10-15
  • 打赏
  • 举报
回复
ADOConnection1.close;

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧