mit indy TIdHTTPServer, auf der Ebene von OnCommandGet gibt es die Möglichkeit, einen Stream mit den Daten an AResponseInfo.ContentStream zu übergeben. das ist in Ordnung. Wann kann ich diesen Stream freigeben? unter der Annahme, dass der Server kann mehrere Anfragen erhalten, und jede Anfrage kann zu gegebener Zeit behandelt werden, und ein Stream kann beliebig zu dem anderen beenden.Nachdem ein Stream an CommandGet übergeben wurde, wann kann er freigegeben werden?
wo könnte der Stream freigegeben werden?
Codebeispiel:
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;
Wann kann der Strom befreit werden? auf was sogar, und wie können wir den IdHttpServer kennen, beendete seine Übertragung?