На сколько безопасно в данном случае использовать List?
class ThreadSafePair<T1, T2> {
object item1Lock = new object(), item2Lock = new object();
T1 item1;
T2 item2;
public T1 Item1 {
get { lock (item1Lock) return item1; }
set { lock (item1Lock) item1 = value; }
}
public T2 Item2 {
get { lock (item2Lock) return item2; }
set { lock (item2Lock) item2 = value; }
}
public ThreadSafePair(T1 item1, T2 item2) {
this.item1 = item1;
this.item2 = item2;
}
}
ConcurrentDictionary<long, ThreadSafePair<List<Update>, AutoResetEvent>> Collection =
new ConcurrentDictionary<long, ThreadSafePair<List<Update>, AutoResetEvent>>();
Добавляет элементы в Collection и в List<Update> 1 поток. С каждым ключом соответственно здесь работает по 1 потоку - они читают и в дальнейшем очищают свой List<Update>, в каком то случае могут даже вовсе удалить элемент из ConcurrentDictionary. Возможно нужно заменить List на ConcurrentBag? Есть тут необходимость во ThreadSafePair?