德尔福应用程序网络共享管理器保留2020-2039范围内的20个端口,以启动其通信线程。 我想知道当第21个应用程序在同一台计算机上启动时会发生什么。事实证明,这个应用程序只是挂起来没有响应,直到它被杀死,我还没有找到一种方法来优雅地终止它。
要重现,只需在空表单上删除TTetheringManager和TTetheringProfile,将配置文件连接到Manager,编译,在IDE外部启动应用程序20次,最后在IDE中启动第21个实例。
这是我到目前为止所发现的:
在 System.Tether.NetworkAdapter:procedure TTetheringNetworkManagerCommunicationThread.Execute ; 当无法启动TCP或UDP通信服务器时,将引发 ETetheringException.Create(SManagerNetworkCreation)。到现在为止还挺好。
此异常显示在调试器中。当我继续并逐步执行以下代码时,应用程序最终会挂起在 System:function AcquireExceptionObject 中,并且永远不会返回。
由于在Application.Run期间引发了应用程序,我试图通过以下方式捕获异常:
try
Application.Run;
except
ShowMessage('Something went terribly wrong!');
end;
但这不起作用。有关如何捕获(或阻止)此异常的任何建议吗?