delphi - 我可以在 TIdTCPServer.OnExecute 事件中使用 Exit
问题描述
在 TIdTCPServer.OnExecute 事件中添加队列命令后,我可以使用 Exit 吗?
if condition then
begin
MyNotify := TMyNotify.Create;
MyNotify.FMyData := Format('%s > %d > %s, [TimeToStr(Now), AContext.Connection.Socket.Binding.Handle, AContext.Binding.PeerIP]);
MyNotify.Notify;
Con.Queue.Add('DCCUSTOMER');
exit;
end;
还是会导致死锁或其他问题?
解决方案
是的,您可以Exit
在TIdTCPServer.OnExecute
事件处理程序中使用。
该OnExecute
事件在 TCP 连接的生命周期内连续循环触发。退出OnExecute
处理程序是完全正常的,事件将再次被触发。这允许您编写更简单的处理程序代码,因为您一次只需编写一次迭代的代码。最常见的用例是读取和处理一个命令,然后退出(隐式或显式,没关系),当再次触发事件时重复下一个命令。
关闭套接字或引发未捕获的异常,将终止循环。
推荐阅读
- python - 3D numpy 数组上的 PCA 实现
- python - 如何根据pytorch中的另一个张量选择索引
- java - 找到最小切割数
- c# - 选择查询 linq to sql 函数
- python - 创建和使用列识别客户 Pyspark
- amazon-web-services - 限制 setup.py 中定义的依赖项的安装
- google-cloud-source-repos - 创建新存储库时出错 (PERMISSION_DENIED)
- flutter-provider - StreamProvider 小部件显示的需要构建错误的标记
- automation - 如何将文件与谷歌驱动器上的密钥相关联?
- laravel - 类 '\Omnipay\FirstData\Gateway' 未找到 Laravel 8