non*_*one 9 delphi memory-management indy stream delphi-2009
使用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;
Run Code Online (Sandbox Code Playgroud)
什么时候可以释放流?什么甚至,我们如何知道IdHttpServer,完成了它的转移?
Ond*_*lle 15
当您将其分配给ContentStream属性时,Indy将成为您的流的所有者,并在不再需要时将其释放.
编辑:假设您将FreeContentStream属性设置为True(这是默认值).