У меня есть коллекция объектов, которая постоянно меняется, и я хочу отображать некоторую информацию о содержимом очень часто (мое приложение является многопоточным, и по-разному потоки постоянно отправляют запросы на изменение объекта в коллекции, поэтомуэто непредсказуемо).
Если я заблокирую коллекцию, я могу перебрать ее и без проблем получить информацию - однако это вызывает проблемы с другими потоками, поскольку они могли подать несколько запросов на изменение коллекцииа пока и остановится.Я подумал о нескольких способах решения этой проблемы и ищу любой совет.
- Сделайте копию коллекции и выполните итерации по ней, что позволит оригиналу продолжить обновление в фоновом режиме.Коллекция может стать большой, поэтому это не идеально, но это безопасно.
- Выполните итерацию по ней с помощью цикла For ... Next и поймайте исключение IndexOutOfBounds, если элемент удален из коллекции, пока мыповторяем.Это может иногда приводить к появлению дубликатов в моем снимке, так что это тоже не идеально.
Есть еще идеи?Меня беспокоит только моментальный снимок, поэтому я не беспокоюсь о том, чтобы отражать изменения в моем приложении - моя главная задача - чтобы коллекция могла обновляться с минимальной задержкой и чтобы обновления никогда не терялись.