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
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