我在使用MemoryStream时遇到了一些问题。
我们正在使用类似Excel的第三方电子表格组件,我正在尝试将数据保存为html,这可以通过下面的SaveHtml
方法进行支持。根据他们的文档,这似乎非常简单。以下是我的代码:
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: 无法访问已关闭的流。
通过反编译器快速查看他们的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,对吗?
有什么绕过这个问题的方法吗?
谢谢。