Delphi XE8 在应用程序启动时优雅地处理 ETetheringException

Delphi XE8 gracefully handle ETetheringException at application startup

Delphi 应用网络共享管理器保留 2020-2039 范围内的 20 个端口以启动其通信线程。 我想知道当第 21 个应用程序在同一台计算机上启动时会发生什么。事实证明,这个应用程序只是挂起而没有响应,直到它被杀死,我还没有找到一种优雅地终止它的方法。

要重现,只需将 TTetheringManager 和 TTetheringProfile 放在空表单上,将配置文件连接到管理器,编译,在 IDE 之外启动应用程序 20 次,最后在 IDE.

这是我目前发现的:

System.Tether.NetworkAdapter中:程序TTetheringNetworkManagerCommunicationThread.Execute; 当无法启动 TCP 或 UDP 通信服务器时,将引发 ETetheringException.Create(SManagerNetworkCreation)。到目前为止,一切都很好。

此异常出现在调试器中。当我继续并逐步执行以下代码时,应用程序最终挂在 System: function AcquireExceptionObject 中,并且永远不会 returns.

由于在 Application.Run 期间引发了应用程序,我尝试通过以下方式捕获异常:

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

但这没有用。有什么建议可以捕获(或防止)此异常吗?

因为这看起来确实是一个错误,我为此提交了一份质量报告:https://quality.embarcadero.com/browse/RSP-11345