8

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

要重现,只需将 TTetheringManager 和 TTetheringProfile 放在一个空表单上,将配置文件连接到 Manager,编译,在 IDE 外启动应用程序 20 次,最后在 IDE 中启动第 21 个实例。

这是我到目前为止发现的:

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

此异常显示在调试器中。当我继续并逐步执行以下代码时,应用程序最终挂在System: 函数 AcquireExceptionObject 中并且永远不会返回。

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

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

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

4

1 回答 1

0

由于这似乎确实是一个错误,我为此提交了一份质量报告:https ://quality.embarcadero.com/browse/RSP-11345

于 2015-06-25T08:47:33.120 回答