public void Execute() { // // LazyInitializerは、Lazyと同様に遅延初期化を行うための // クラスである。このクラスは、staticメソッドのみで構成され // Lazyでの記述を簡便化するために存在する。 // // EnsureInitializedメソッドは // Lazyクラスにて、LazyThreadSafetyMode.PublicationOnlyを // 指定した場合と同じ動作となる。(race-to-initialize) // var hasHeavy = new HasHeavyData(); Parallel.Invoke ( () => { Output.WriteLine("Created. [{0}]", hasHeavy.Heavy.CreatedThreadId); }, () => { Output.WriteLine("Created. [{0}]", hasHeavy.Heavy.CreatedThreadId); }, // 少し待機してから、作成済みの値にアクセス. () => { Thread.Sleep(TimeSpan.FromMilliseconds(2000)); Output.WriteLine(">>少し待機してから、作成済みの値にアクセス."); Output.WriteLine(">>Created. [{0}]", hasHeavy.Heavy.CreatedThreadId); } ); }