- - PR -
マルチスレッドシングルトンでロックオブジェクトがnull
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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の位置に持っていくことでも 原因は回避できました。 単純に宣言された順に処理を行っているということですね。 シングルトンはこのあたりも考慮しないといけないんですね。 付き合って頂いたみなさん、ありがとうございました。 |