MemoryStream の使用に問題があります
サードパーティのスプレッドシート コンポーネント (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 を閉じると、基になるストリームが閉じられますよね?
これを回避する方法はありますか?
ありがとう。