将流传递给 CommandGet 后,何时可以释放它



使用indy TIdHTTPServer,在OnCommandGet上,有可能将带有数据的流传递给AResponseInfo.ContentStream。这很好。我什么时候可以释放该流?假设服务器可以获取多个请求,并且任何请求都可以在给定时间处理,并且一个流可以任意完成另一个流。

哪里可以释放溪流?

代码示例:

var
  StreamsToFree : TList;
//assume StreamsToFree := TList.create; properly 
procedure TObject.IdHttpServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
stream : TFileStream;
begin
  stream := TFileSTream.create('file.name');
  AResponseInfo.ContentStream := stream;
  AResponseInfo.ResponseNo := 200;
  StreamsToFree.Add(generateReceiptXML);  
end;

什么时候可以释放流? 甚至,我们如何知道 IdHttpServer ,完成了它的传输?

当您将其分配给 ContentStream 属性时,Indy 将成为您的流的所有者,并在不再需要时将其释放。

编辑:假设您将FreeContentStream属性设置为True(这是默认值)。

相关内容

  • 没有找到相关文章

最新更新