【发布时间】:2012-07-20 03:59:06
【问题描述】:
我在使用 MemoryStream 时遇到了一些问题
我们正在使用第 3 方电子表格组件(类似于 excel),我正在尝试通过下面的 SaveHtml 方法将数据保存为它们支持的 html。根据他们的文档,看起来非常简单。这是我的代码:
using (var memoryStream = new MemoryStream())
{
this.ActiveSheet.SaveHtml(memoryStream);
memoryStream.Position = 0;
using (var streamReader = new StreamReader(memoryStream))
{
var htmlData = streamReader.ReadToEnd();
}
}
设置memoryStream.Position = 0时出现异常:
System.ObjectDisposedException: Cannot access a closed Stream.
快速浏览一下他们在 Reflector 中的 SaveHtml 方法会发现以下相关行:
public void SaveHtml(Stream stream)
{
StreamWriter writer = null;
try
{
writer = new StreamWriter(stream) { AutoFlush = true };
writer.Write(str);
}
finally
{
if (writer != null)
{
writer.Close();
}
}
}
我猜是因为 streamWriter 被他们的代码关闭了,我们不走运。关闭streamWriter,也就关闭了底层Stream吧?
有什么办法可以解决这个问题?
谢谢。
【问题讨论】:
-
memoryStream.GetBuffer() 应该仍然可以工作,恕我直言
-
@user1096188:根据消息来源,应该!发布为答案。好东西要记住,谢谢;)
标签: c# .net stream memorystream