2016-08-09 6 views
1

StreamResponse()を使用しているときにストリームがNancyFxに配置されていますか?NancyFx:StreamResponse()を使用しているときにストリームが破棄されていますか?

streamWriterを使用してストリームに書き込むと、送信したいストリームを閉じずにストリームを書き込むことはできません。そして私が見ているように、私はストリームを手作業で処理することはできません。

このコードは動作します:ガベージコレクタが一緒に来るか、StreamResponseによって正しく配置されたのですかまで

// Open a stream and write to it with streamReader 
Stream memStream = new MemoryStream(); 
StreamWriter memWriter = new StreamWriter(memStream, Encoding.UTF8); 
memWriter.Write(someStringText); 
memWriter.Flush(); 
memStream.Position = 0; 

// Add stream to the respose which should get downloaded 
var response = new StreamResponse(() => memStream, MimeTypes.GetMimeType(contentType)); 
return response.AsAttachment(someFileName); 

は、私が上の余韻ストリームを心配する必要がありますか?

+0

そのクラスがIDisposableを実装している場合は、終了したらそれを破棄します。 –

答えて

1

StreamResponse.csによれば、StreamResponse.Dispose()は、Func<Stream>によって返されたストリームを廃棄します。

StreamWriterの処理については、下位のストリームに影響を与えずに、this answerを参照してください。

+0

そして、streamWriterはガベージコレクタによって安全に管理できますか?ストリームを閉じることなく処理する方法はありません。 – Bingla

+0

@Bingla私の編集を参照してください。 –

+0

StreamResponse.Dispose()はいつ呼び出されますか?それはナンシーによって処理されるのでしょうか、それとも明示的に呼び出す必要がありますか? – Mac

関連する問題