メインシステムには、ネットワークの外部に配置され、システムがまだ機能していることを確認するために定期的にログインを試みる小さなモニターアプリケーションがあります。ただし、通信コンポーネントセット(Delphiアプリケーション内のAsta 3)が常に接続するとは限らないという点で、モニターに問題があります。全体として、約95%の信頼性があると思いますが、他の5%は、ログインを試みて接続の試行でハングするため(コンポーネントでタイムアウトなし)、モニターを強制終了します。クライアントは同じアプリケーションインスタンスで繰り返し切断および再接続しないため、これはシステムのクライアント側では実際には問題ではありませんが、コンポーネントに障害が発生した場合でもモニターが稼働し続けていることを確認する方法が必要です実行時に。プログラムを実行する方法についていくつかのアイデアがあります。主なアイデアは、通信をスレッド化されたデータモジュール内に配置して、1つのスレッドがクラッシュした場合に、別のスレッドが後でテストしてプログラムを続行できるようにすることです。これは有効な方法のように聞こえますか? 100%未満の信頼性の高いコンポーネントで信頼性の高い監視アプリケーションを確保する方法の他のアイデアはありますか?
タイムアウトをサポートするネットワークコンポーネントに切り替えない理由はありますか?それがここでの常識的な解決策のようです。
Indy、Synapse、または単純なTSocket接続を使用できますか?
編集:
現実的に切り替えることができないため、次のことができます。
チェックを実行するコマンドラインプログラムを作成し、親アプリからCreateProcessを使用して開始し、ハングした場合は停止します。
ASTAを作成する人にタイムアウト設定をせがむ。まだそこにないのはひどく奇妙に思えます。