在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 已经传输完成?