lock (Lock)
{
//페이지에 구조체를 보여줌. 24개(MaxViewItemCount)가 꽉차면 다음 페이지로 넘김.
//구조체의 Page=해당 구조체가 존재하는 페이지
//PageCount=페이지 수 (현재 페이지 값이 아님)
//같은 Page값을 가진 구조체가 25개 이상( >MaxViewItemCount) 존재하면 안됨.
structure.Page = PageCount;
structure.RowColumnIndex = (Items.Count % MaxViewItemCount);
Items.Add(structure); //전체 구조체 목록에 추가
if (Items.Count % MaxViewItemCount == 0) PageCount++;
Added?.Invoke();
}
MaxViewItemCount는 const값임. 문제는 PageCount. 이놈을 Thread-Safe하게 만들고싶은데...
리스트나 큐같은경우에는 Thread Safe인 컨테이너들이 있어서 괜찮은데. 저놈은 단일 int값이라 뭐 어떻게해야할지 모르겠음. Interlocked 가 뭔가 연관잇어보이긴 하는데...
뭔가 lock을 쓰게되면 성능 이전에 코드가 지저분해지는 느낌이라 배제하고싶음.
자답함. Interlocked.Exchange(ref structure.Page, PageCount)랑 Interlocked.Increment(ref pagecount) 쓰면 될거같다. 쓰고나니 답이 보이네