D
dyzk82
Unregistered / Unconfirmed
GUEST, unregistred user!
最近有个项目用到了三层结构,发现一个问题(此现象在kylix3中一定会出现,而在delphi7中又不一定,不知大家有没有用过kylix,其实它的dbexpress的方法都和delphi一样的。)
在程序中使用了一个Tsqlconnect 和 TSQLQuery组件.如果在运行SQLQuery1.Open 时服务器断开连接,此时客户程序就会死在这里,且不会有超时提示,发现程序会卡在SQLQuery1.Open 这行代码上,
现在想一个办法,如何解决这个问题,关键是SQLQuery1.Open 这行代码跳不过去,我在测试中尝试另外开了一个线程试图关闭SQLQuery1 (SQLQuery1.Close),但这样做没有效果,因为TSQLQuery是针对多线程设计的,那行代码依然跳不过去、
现在想来只有一个办法了,看有没有手动强行关闭一个正在打开或者取数据的数据组件的方法,类似于windows的消息。不知那大虾能提供参考。
大家可能很少用kylix,使用方法和delphi是一样的,只要能给出在delphi中,强行关闭一个正在打开或者取数据的数据组件的方法就可以了(比如你可以设置一个查询时间比较长的Sql语句,然后再exec,这个过程放到一个单独的线程中),然后你再在主线程中运行你的方法,看能不能关闭,正在执行的sql语句)
请大家提供些建议,小弟搞不定就麻烦了。
在程序中使用了一个Tsqlconnect 和 TSQLQuery组件.如果在运行SQLQuery1.Open 时服务器断开连接,此时客户程序就会死在这里,且不会有超时提示,发现程序会卡在SQLQuery1.Open 这行代码上,
现在想一个办法,如何解决这个问题,关键是SQLQuery1.Open 这行代码跳不过去,我在测试中尝试另外开了一个线程试图关闭SQLQuery1 (SQLQuery1.Close),但这样做没有效果,因为TSQLQuery是针对多线程设计的,那行代码依然跳不过去、
现在想来只有一个办法了,看有没有手动强行关闭一个正在打开或者取数据的数据组件的方法,类似于windows的消息。不知那大虾能提供参考。
大家可能很少用kylix,使用方法和delphi是一样的,只要能给出在delphi中,强行关闭一个正在打开或者取数据的数据组件的方法就可以了(比如你可以设置一个查询时间比较长的Sql语句,然后再exec,这个过程放到一个单独的线程中),然后你再在主线程中运行你的方法,看能不能关闭,正在执行的sql语句)
请大家提供些建议,小弟搞不定就麻烦了。