У меня есть событие CollectionChanged
, связанное с ObservableCollection
. Это событие CollectionChanged
затем вызывает другую функцию, которая предназначена для обновления другой коллекции (того же типа) с элементом из первоначальной коллекции. Я прочитал другие сообщения в разделе "Невозможно изменить ObservableCollection во время события CollectionChanged", и я полностью понимаю, почему он не согласен изменить коллекцию внутри события CollectionChanged
и почему это может привести к циклической ссылке... но в в этом конкретном случае я не изменяю исходную коллекцию, я только добавляю элемент из него в несвязанную коллекцию.
Итак, к моему вопросу.. что-то не так с тем, что я делаю? Я не вижу, как добавление элемента из коллекции с привязанным к нему событием в другую коллекцию снова вызовет событие и создаст круговую ссылку (хотя, пожалуйста, скажите мне, если я ошибаюсь в этом).
Также... есть ли какой-нибудь способ? Я прочитал несколько сообщений, советующих запускать это в отдельном потоке, но когда я попробую, я получаю следующую ошибку.
This type of CollectionView does not support changes to its SourceCollection
from a thread different from the Dispatcher thread.
Я действительно только после лучшего понимания того, что происходит здесь. Любые советы будут высоко оценены.
Edit
Упрощенный пример по запросу
void originalCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
update(originalCollection);
}
private void update(object parameter)
{
foreach (var originalCollectionItem in parameter)
newCollection.Add(originalCollectionItem);
}