Есть ли хороший способ обновить элемент в ObservableCollection как «Потокобезопасный»?
Вот мой путь.
var target = MyCollection.Where(i => i.Key== a_Key).Single(); MyCollection[MyCollection.IndexOf(target)] = NewValue;
Но я волнуюсь. Если я использую индекс, он не может быть безопасным для потоков Пожалуйста, посоветуйте мне.
В Интернете существует некоторая многопотоковая коллекция ObservableCollection. Я хочу использовать № 1.
Есть ли лучший способ?
Редактировать (1)
Когда я использовал индекс для замены, мне приходилось беспокоиться о том, что другой поток может изменить или отсортировать коллекцию. Индекс может измениться, пока я не перезаписать. Есть ли возможность?
Я хочу узнать более хороший способ обновления / перезаписи элемента коллекции.
Если есть способ обновить / перезаписать элемент БЕЗ индекса, пожалуйста, научите меня ..
В любом случае вы можете обновить только привязанный к данным ObservableCollection<T> в потоке диспетчера, если только вы не используете метод BindingOperations.EnableCollectionSynchronization , который был представлен в .NET Framework 4.5.
ObservableCollection<T>
Этот метод принимает object для блокировки при доступе к коллекции. Пожалуйста, смотрите этот ответ для примера.
object