Просто поинтересовался, каков наилучший подход для этого сценария - попытка привязать данные к коллекции, которая заполняется в другом фоновом потоке.
Мой фоновый поток добавляет элементы в коллекцию в цикле обработки, который можетбегать несколько минут.Время от времени он вызывает событие для пользовательского интерфейса и передает ссылку на данные из коллекции для визуализации пользовательского интерфейса (чтобы пользователь мог начать взаимодействовать с тем, что у него есть) и продолжает обработку.
Проблема в том, что пользовательский интерфейс начинает отображать визуализацию (которая сама по себе довольно сложная), которая включает цикл foreach () для сбора данных, и понятно, что этот цикл завершается, если мой фоновый поток изменяет данные вКоллекция во время перечисления.
Итак, мой мозговой штурм прошел так:
- приостановить фоновую цепочку;но я действительно не хочу приостанавливать
- , чтобы получить дублирующую копию снимка всех или некоторые данные в каждом событии и привязать данные к снимку.Удваивает использование памяти, но, вероятно, сработает
- для реализации какой-либо блокировки {} в syncroot или любой другой коллекции, поэтому пока пользовательский интерфейс обновляет фоновый процесс, придется подождать.В любом случае, не уверен в том, что эта работа
- все время запускает событие и просто передает один бит данных за раз, что дает тот же результат, что и # 2, но с дополнительными издержками.
ура Ewart.