我有一个 TidTCPServer,它在 onExcecute 事件中使用数据库操作(通过使用 TidNotify)。一切都很好,而不是可能关闭应用程序。在关闭应用程序期间,我不知道所有通知实例是否都完成了工作,通常我得到运行时错误 216(我想我在“通知”工作结束之前关闭了数据库)。有什么方法可以检查 - 是否有等待旧的通知帖子或不确定我可以关闭应用程序。另一个问题是如何保护 TidTCPServer 在关闭服务器过程中不接受新连接。我使用下面的代码,但我仍然得到错误。
type
TShutdownThread = class(TThread)
protected
procedure Execute; override;
end;
procedure TShutdownThread.Execute;
begin
IdTCPServer.Active := false;
end;
//closing...
if IdTCPServer.Active then
begin
with TShutdownThread.Create(false) do
try
WaitFor; // internally processes sync requests...
finally
Free;
end;
end;