9

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が転送を終了したことをどのようにして知ることができますか?

4

1 に答える 1

15

プロパティに割り当てるとContentStream、Indyがストリームの所有者になり、不要になったときにストリームを解放します。

FreeContentStream編集:プロパティをTrue(デフォルト)に設定したままにすると仮定します。

于 2012-11-15T14:57:37.133 に答える