8

Delphi アプリのテザリング マネージャーは、通信スレッドを開始するために、2020 年から 2039 年までの範囲で 20 個のポートを予約しています。同じコンピューターで 21 番目のアプリケーションを起動するとどうなるかを知りたかったのです。このアプリケーションは、強制終了されるまで応答せずにハングアップするだけであり、正常に終了する方法が見つかりませんでした。

再現するには、TTetheringManager と TTetheringProfile を空のフォームにドロップし、プロファイルを Manager に接続し、コンパイルして、IDE の外部でアプリケーションを 20 回起動し、最後に IDE で 21 番目のインスタンスを起動します。

これは私がこれまでに見つけたものです:

System.Tether.NetworkAdapter: プロシージャTTetheringNetworkManagerCommunicationThread.Execute ; TCP または UDP 通信サーバーを起動できなかった場合、ETetheringException.Create(SManagerNetworkCreation)が発生します。ここまでは順調ですね。

この例外は、デバッガーに表示されます。続行して次のコードをステップ実行すると、アプリケーションは最終的にSystem: function AcquireExceptionObjectでハングし、戻りません。

Application.Run 中にアプリケーションが発生するため、次の方法で例外をキャッチしようとしました。

try
  Application.Run;
except
  ShowMessage('Something went terribly wrong!');
end;

しかし、これはうまくいきませんでした。この例外をキャッチ (または防止) する方法について何か提案はありますか?

4

1 に答える 1