Проблемы с MemoryStream

У меня возникли проблемы с использованием 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 закрывает основной поток, верно?

Есть ли способ обойти это?

Спасибо.

5
задан John Russell 20 July 2012 в 20:47
поделиться