【C#】閉じているストリームにアクセスすることはできません。の解決方法【ObjectDisposedException】

C#,エラー/例外

「閉じているストリームにアクセスすることはできません。」エラーの解決方法

C#で発生するエラー(例外)
System.ObjectDisposedException: 閉じているストリームにアクセスすることはできません。

上記のエラー(例外)が発生したときの解決方法をご紹介します。

下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

【C#】閉じているストリームにアクセスすることはできません。のエラーの原因

System.ObjectDisposedException: 閉じているストリームにアクセスすることはできません。
のエラーの原因は
破棄されたオブジェクトで操作が実行された
からです。



エラーコードの例を見て具体的に確認してみましょう。

MemoryStream ms = new MemoryStream(16);
ms.Dispose();
ms.ReadByte();// Dispose(廃棄)したオブジェクトを利用しようとしたためエラーが発生

MemoryStreamはメモリにデータを読み書きするためのクラスで、ファイルとして保存する必要がない場合に使用されます。
FileStreamクラス(ファイルを読み書きするためのクラス)のメモリバージョンという認識で構いません。


このMemoryStreamクラスをインスタンス化した後に「ms.Dispose();」で破棄しています。
しかしその後「ms.ReadByte();」で破棄したインスタンスを使用したためエラーが発生しました。


上記エラーのイメージはこちらです。

「閉じているストリームにアクセスすることはできません。」のエラーイメージ

上記のように廃棄したインスタンスを利用しようとした場合にエラーが発生します。

「System.ObjectDisposedException:」の詳細はこちらから

【C#】閉じているストリームにアクセスすることはできません。エラーの解決方法

System.ObjectDisposedException: 閉じているストリームにアクセスすることはできません。のエラーを解決する方法をご紹介します。

①Dispose(廃棄)する前に処理を実行する

MemoryStream ms = new MemoryStream(16);
ms.ReadByte();// Dispose(廃棄)する前に実行するとエラーが解消される。
ms.Dispose();

上記のように廃棄する前にインスタンスの処理を実行すればエラーが解消されます。




エラーを解決できなくて途方に暮れている人へ。

■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。

このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!

C#初心者向けに始め方ガイドを作成しています。
筆者

プログラミング初心者の方はぜひチャレンジしてみてください!!

C#,エラー/例外

Posted by 9noike