C#基本

[C#] 標準例外 System.ObjectDisposedException

標準例外「System.ObjectDisposedException」についてです。

定義

例外

System.ObjectDisposedException

原因・意味

  • 破棄されたオブジェクトに対して操作が実行された
    (メソッドの呼び出し等が行われた)

対処法

  • 破棄したオブジェクトにはアクセスしない
  • オブジェクトは完全に使用しなくなってから破棄する

発生例

例)破棄したMemoryStreamに対してReadByte()を行う

using System.IO;

// メモリストリームの生成
MemoryStream ms = new MemoryStream(16);

// 破棄
ms.Dispose();

// 破棄したメモリストリームにアクセス
var  a = ms.ReadByte();  //⇐例外発生

System.ObjectDisposedException: 'Cannot access a closed Stream.'

7行目で破棄したオブジェクトに10行目でアクセスしているため例外が発生します

-C#基本
-