我有一个 Delphi 6 应用程序,它使用 Indy 9 组件来维护与外部设备的持久 IdTCPConnection。有时我想断开连接,然后重新连接到设备。我发现当我这样做时,Indy 会抛出多达 3 个单独的异常。这使得开发一个干净的重新连接策略有些混乱,因为 Indy 组件位于后台线程上,我不想打破线程 Execute() 循环。
在我尝试重新连接之前,有什么好的或干净的方法来吸收 3 个例外?我看到的 3 个异常是,按出现的顺序,EIdClosedSocket、EIdConnClosedGracefully、EIdSocketError(LastError = WSAECONNABORTED)。在尝试重新连接之前,我想等到与关闭套接字相关的所有异常都已经传播,但我不确定如何构建我的代码循环来做到这一点。