2013-06-06 12 views
13

Ho un evento CollectionChanged associato a ObservableCollection. Questo evento CollectionChanged chiama quindi un'altra funzione che ha lo scopo di aggiornare un'altra raccolta (dello stesso tipo) con un elemento della raccolta originale. Ho letto altri post su "Impossibile modificare ObservableCollection durante un evento CollectionChanged" e ho capito completamente perché è disapprovato modificare una raccolta all'interno di un evento CollectionChanged e perché ciò può comportare un riferimento circolare ... ma in In questo caso specifico non sto modificando la collezione originale, sto solo aggiungendo un articolo da esso a una collezione non correlata.Impossibile modificare ObservableCollection durante un evento CollectionChanged

Quindi alla mia domanda .. c'è qualcosa di sbagliato in quello che sto facendo? Non vedo come l'aggiunta di un oggetto dalla raccolta con l'evento legato ad essa in un'altra raccolta possa attivare nuovamente l'evento e creare un riferimento circolare (anche se mi dica se ho torto su questo).

Inoltre ... c'è un modo per aggirarlo? Ho letto diversi post che consigliano di eseguirlo su un thread separato, ma quando provo ho il seguente errore.

This type of CollectionView does not support changes to its SourceCollection 
from a thread different from the Dispatcher thread. 

Sono davvero solo dopo una migliore comprensione di ciò che sta succedendo qui. Qualsiasi consiglio sarebbe molto apprezzato.

Modifica

esempio semplificato come richiesto

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); 
} 
+0

Che errore ottieni? – SLaks

+0

Il titolo del messaggio è il messaggio di errore .. Impossibile modificare ObservableCollection durante un evento CollectionChanged – aw04

+0

Potresti pubblicare il codice effettivo? –

risposta

Problemi correlati