エラー「セーフハンドルは閉じられました」2008年03月22日 17時48分35秒

先週本番環境にインストールしたアプリケーションでタイトルのようなエラーがでて解決方法がわからず困っていました。

このエラーはObjectDisposedExceptionというそうです。Closeメソッドが呼ばれて、すでに破棄されたオブジェクトに対してアクセスしようとするとこのエラーになるようです。MSDNには以下のようなサンプルコードが載っています。

using System;
using System.IO;
public class ObjectDisposedExceptionTest 
{
  public static void Main()
  {     
     MemoryStream ms = new MemoryStream(16);
     ms.Close();
     try 
     {
        ms.ReadByte();
     } 
     catch (ObjectDisposedException e) 
     {
        Console.WriteLine("Caught: {0}", e.Message);
     }
  }
}

さすがにこんな単純なミスをすることはないでしょう。ただ今回はマルチスレッドで複数のスレッドからアクセスするオブジェクトだったため、このエラーが発生するようになってしまったようです。マルチスレッドの同期処理はしっかりしないといけません。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://minoproject.asablo.jp/blog/2008/03/22/2810642/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。