2016-08-09 4 views
1

Есть ли потоки, расположенные в NancyFx при использовании StreamResponse()?NancyFx: Есть ли потоки, которые используются при использовании StreamResponse()?

Использование streamWriter для записи в поток, я не могу избавиться от него, не закрывая поток, который я хочу отправить. И, как я вижу это, я не могу избавиться от потока вручную, так как я фактически оставил метод при возврате.

Этот код работает:

// 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); 

мне нужно беспокоиться о поток не задерживаясь, пока сборщик мусора приходит или сделать это получить правильно утилизировать в StreamResponse ли?

+0

Если этот класс реализует IDisposable, то удалите его, если вы закончите с ним. –

ответ

1

Согласно StreamResponse.cs, StreamResponse.Dispose() располагает потоком, возвращаемым Func<Stream>.

Что касается размещения StreamWriter без влияния на нижележащий поток, см. this answer.

+0

И streamWriter может безопасно управляться сборщиком мусора? Я не вижу возможности справиться с этим, не закрывая поток. – Bingla

+0

@Bingla См. Мое редактирование. –

+0

Когда называется StreamResponse.Dispose()? Это обрабатывается Нэнси, или нам нужно называть это явно? – Mac