Потокобезопасный перебор коллекции

93
24 февраля 2021, 10:00

Подскажите, как можно реализовать коллекцию, реализующую INotifyCollectionChanged, и которую можно было бы потокобезопасно перебирать? Наследоваться от ConcurrentCollection не получится, т.к. не получится реализовать INotifyCollectionChanged.

Для потокобезопасного перебора я вижу следующие варианты: 1) Блокировать коллекцию на время обхода. Но, если обработка элемента занимает длительное время, этот вариант не подходит 2) Перед перебором коллекции блокировать доступ к ней на время создания её копии и перебирать уже копию. Но при частом переборе будет создаваться много мусора.

Если наследоваться от ObservableCollection, то получу весь необходимый функционал, вставив блокировку в методы, модифицирующие коллекцию, но не смогу переопределить GetEnumerator и скопировать в нем коллекцию для потокобезопасного обхода коллекции.

Единственный вариант - реализовать свою коллекцию с нуля?

READ ALSO
C# атрибут XML повторяющий

C# атрибут XML повторяющий

прошу Вас помогите 3 дня уже почти сижу не могу понять как сделатьЕсть ХМЛ документ вот пример: Как видите, тут два атрибута <"ValType Type="> повторяются,...

104
C# WebSocket, перехват события (DonationAlerts)

C# WebSocket, перехват события (DonationAlerts)

Моя цель - получить событие "донат" от стороннего ресурса (DonationAlerts) для дальнейшей обработки сообщенияСвязывался с поддержкой по этому поводу,...

79
Parse error: syntax error, unexpected &#39;;&#39; in C:\OSPanel\domains\localhost\index.php on line 21 [закрыт]

Parse error: syntax error, unexpected ';' in C:\OSPanel\domains\localhost\index.php on line 21 [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

92