TAdoQuery的大BUG?断网重连后不能再Open公用AdoQuery,要不然堆栈溢出

TAdoQuery的大BUG?断网重连后不能再Open公用AdoQuery,否则堆栈溢出。
最近接了个任务,给一个程序增加断网重连的能力(该程序是通过ADO连接到MSSQL数据库)。
于是,我做了一个ADO连接的辅助类TAdoConnHelper,它的主要功能是:
1.检测断网;
2.待网络恢复后,重连;
3.发送消息,通知其他窗体刷新数据。

功能1,2都没问题,但功能3出现问题了。

问题:
如果某个FORM中实现查询数据时,使用了另一个DataModule中的TAdoQuery(公用TAdoQuery),那么刷新数据时,就不能再Open该TAdoQuery了,否则会导致堆栈溢出。
如果在断网之前,只使用自己本单元的TAdoQuery就没有问题。

我跟了一下那个公用DEMO,发现断网后它的active=inactive, Dataset.RecordsetState=[stExecuting].
此时,什么CLOSE啥的都没用了,我怀疑这是TAdoQuery的Bug。

不知道有什么办法解决吗?
--------
我提取了一个DEMO,可以到网盘下载,链接:
 http://yunpan.cn/cA7mdRacxZTrD  
提取码 7716
压缩包中有个SQL脚本,请先执行一下,就可以运行DEMO了。谢谢。

------解决思路----------------------
我一般是在查询的时候判断


偷了点懒,  定义了个全局标志. 连接数据库后, 标志为true,  程序在查询时, 如果发现断网无法连接,  重置连接标志位.  
程序再有查询等过来, 看到标志被重置,  就直接再重新连接.....


反正断网后, 不管你有没有个  "断网重连的能力"   的模块, 结果都一样,  连接不上, 获取不到数据.....
加上你这个模块, 在你没连接上之前, 该来的查询一样会来, 查询不到还是查询不到....
最多就是, 不会出现界面卡死的情况...


------解决思路----------------------
同意楼上意见,数据连接时,就可以判断,如果断线,特别是物理断线,你是解决不了问题的。
------解决思路----------------------
重连之前先判断是否active=inactive
如果是,用一楼的办法解决。
在没有重新连上之前,先用本地的。