使用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
(这是默认值)。