Indy 9 コンポーネントを使用して外部デバイスとの永続的な IdTCPConnection を維持する Delphi 6 アプリケーションがあります。接続を切断してからデバイスに再接続したい場合があります。私が行ったときに、Indy が最大 3 つの個別の例外をスローすることがわかりました。これは、Indy コンポーネントがバックグラウンド スレッド上にあり、スレッドの Execute() ループを中断したくないため、クリーンな再接続戦略の開発をやや面倒にしています。
再接続を試みる前に 3 つの例外を吸収する適切な、またはクリーンな方法は何ですか? 私が確認した 3 つの例外は、出現順に、EIdClosedSocket、EIdConnClosedGracefully、EIdSocketError (LastError = WSAECONNABORTED) です。再接続を試行する前に、ソケットのクローズに関連するすべての例外が伝播するまで待ちたいのですが、それを行うためのコード ループを構築する方法がわかりません。