- PR -

マルチスレッドシングルトンでロックオブジェクトがnull

投稿者投稿内容
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-08-30 10:25
解決しました。
実際のソースは、以下の「原因箇所」のところでも、初期化を行っており
Hogeクラスは、内部でSingletonクラスを使用しています。
どうやらこれがまずかったみたいです。

この1行を削除すると現象は回避されました。

public sealed class Singleton
{
Hoge hoge = new Hoge(); // ←原因箇所

private static object lockObj = new Object(); // ←A

// B

private static Singleton instance;

〜略

}

また、この原因箇所を、Bの位置に持っていくことでも
原因は回避できました。
単純に宣言された順に処理を行っているということですね。
シングルトンはこのあたりも考慮しないといけないんですね。

付き合って頂いたみなさん、ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)