【问题标题】:NancyFx: Are streams disposed when using StreamResponse()?NancyFx:使用 StreamResponse() 时是否会处理流?
【发布时间】:2016-08-09 12:28:48
【问题描述】:

在使用 StreamResponse() 时,流是否在 NancyFx 中处理?

使用 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 正确处理?

【问题讨论】:

  • 如果那个类实现了 IDisposable,那么如果你完成了它,就释放它。

标签: c# stream nancy


【解决方案1】:

根据StreamResponse.csStreamResponse.Dispose() 处理由Func<Stream> 返回的流,Nancy 处理在NancyContext 末尾处理Response

关于在不影响底层流的情况下处理StreamWriter,请参阅this answer

【讨论】:

  • 并且streamWriter可以安全地被垃圾收集器管理?如果不关闭流,我认为无法处理。
  • 什么时候调用 StreamResponse.Dispose() ?这是由 Nancy 处理的,还是我们需要显式调用它?
猜你喜欢
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 2019-01-25
  • 2022-12-15
相关资源
最近更新 更多