Delphi应用程序网络共享管理器保留2020-2039范围内的20个端口,以启动其通信线程.
我想知道当第21个应用程序在同一台计算机上启动时会发生什么.事实证明,这个应用程序只是挂起无响应,直到它被杀死,我还没有找到一种方法来优雅地终止它.
我想知道当第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;
但这没用.有关如何捕获(或阻止)此异常的任何建议吗?
解决方法
由于这似乎是一个错误,我提交了一份质量报告:
https://quality.embarcadero.com/browse/RSP-11345