Любые идеи о том, как сделать ConcurrentDictionary потокобезопасным в условиях, когда значения экспортируются в список ex и после того, как этот словарь очищается.Так что любой другой поток не может добавить данные между экспортом и очисткой.
Примерно так: "
List<data> list;
list = (List<data>)_changedItems.Values; //get values before clearing
_changedItems.Clear();
" И добавление выполняется другими потоками с помощью функции _changedItems.AddOrUpdate
* 1007.* Теперь есть возможность потерять новые данные между извлечением данных из словаря и очисткой контента, если какой-то поток добавляет объекты данных в коллекцию перед строкой очистки.
Или это единственный способ добавить и очиститьвнутренний замок.
lock(object)
{
List<data> list;
list = (List<data>)_changedItems.Values;
_changedItems.Clear();
}
И
lock(object)
_changedItems.AddOrUpdate
Необходима функция Clear, которая безопасно возвращает все очищенные элементы из словаря ..
-Larry