首页 > 解决方案 > 如何正确关闭 idHTTPServer 以避免请求线程的内存泄漏?

问题描述

idHTTPServer 为每个请求创建线程。有时,我的线程工作时间很长,所以当我关闭服务器时,它会因意外的内存块而泄漏。有时一切工作都没有内存泄漏,这取决于应用程序关闭的时刻。为避免这种情况,我尝试执行以下 2 个步骤。1. Server.Active := false 或者可能处于离线模式。2. 终止所有请求线程 // 不知道该怎么做 ((

在我关闭应用程序之前有什么方法可以终止工作线程吗?

我实现了这种长时间运行线程的方法,这是我自己的线程类

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: integer;
begin
  Stop();

  with LongTaskThreads.LockList() do
  try
    for i := 0 to Count - 1 do
    begin
      TLongTaskThread(Items[i]).FreeOnTerminate := false; // in other case they will be destroyed automatically
      TLongTaskThread(Items[i]).Free();
    end;
  finally
    LongTaskThreads.UnlockList();
  end;
end;

是否有类似的方法来请求 idHTTPServer 的线程?

问候,斯坦

标签: delphiindy

解决方案


推荐阅读