【发布时间】:2018-10-17 09:15:32
【问题描述】:
在using 中,我正在生成一个Stream:
using (var generatedStream = GenerateStream(str))
{
var streamContent = generatedStream;
}
GenerateStream(string s) 看起来像这样:
private static Stream GenerateStream(string s)
{
var stream = new MemoryStream();
using (var writer = new StreamWriter(stream))
{
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
}
当我将generatedStream 分配给streamContent 时,更具体地说,当我退出GenerateStream 中的using 语句时,它表示stream 已被释放。我在确保处置我的作家方面做错了什么?
更新:
链接问题中发布的解决方案似乎是解决此特定问题的方法。
【问题讨论】:
-
问题是在
GenerateStream内部你释放了writer,而stream又释放了stream,因为StreamWriter控制了底层流。我记得有办法告诉StreamWriter不要那样做,但我就是找不到他们...... -
这可能会有所帮助:stackoverflow.com/a/2666906/1009661
-
@RenéVogt 我相信这将是链接的重复帖子
-
@Rahul 是的,就是这样。在其他构造函数中,我发现采用布尔值,该布尔值用于指示追加或覆盖模式......这就是我感到困惑的原因。