public static void Create(IMeasureRepository repository) { //Lock ロックの中の処理をしている間は_entitiesの値をみにきてもロックが抜けるまで待つ、抜けたら使いたい人が通る lock (((ICollection)_entities).SyncRoot) { _entities.Clear(); _entities.AddRange(repository.GetLatests()); } }
/// <summary> /// リストを作成する /// </summary> /// <param name="repository">計測リポジトリー</param> public static void Create(IMeasureRepository repository) { // publicになっているので複数からアクセスされる可能性がある // 一つだけのアクセスlockで保証する lock (((ICollection)_entities).SyncRoot) { _entities.Clear(); // リストを取得 _entities.AddRange(repository.GetLatests()); } }