У меня возникли проблемы с использованием 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: Cannot access a closed Stream.
Беглый взгляд на их метод SaveHtml в Reflector показывает следующие соответствующие строки:
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 закрывает основной поток, верно?
Есть ли способ обойти это?
Спасибо.