De façon asynchrone en ajoutant à ObservableCollection (ou une alternative)

Voici ce que j'ai
- une zone de liste avec un ItemsSource ensemble à un ObservableCollection<T>
- où T est ma classe personnalisée représentant un dossier, contenant seulement 2 DependencyProperties: nom de fichier et ThumbnailPath.
- La zone de liste dispose également d'un DataTemplate personnalisé défini, afin de bien afficher une image et un nom de fichier sous.

Le but de la zone de liste est pour afficher des fichiers vidéo dans le dossier actif (sélectionné dans un TreeView), avec des vignettes (générés de façon asynchrone; ne fait pas partie de ce problème).

Alors quand j'ai changer le dossier dans l'Arborescence, l'ObservableCollection est nettoyé et rempli de nouveau, ce qui se reflète automatiquement dans la zone de liste des éléments.

Voici le problème: L'INTERFACE utilisateur ne répond plus, et il faut plusieurs secondes pour mettre à jour. Encore une fois, les vignettes n'ont pas d'importance ici (j'ai essayé de les désactiver).
Je pense que ce qui prend le plus de temps est la construction de 50 à 100 cas de ma classe personnalisée, et leur représentation visuelle - elle a pour initialiser une Image de l'objet pour chacun d'eux. Mais c'est juste mon avis - pourriez-vous confirmer ou d'exclure la possibilité?

Je commence à penser ObservableCollection peut pas la voie à suivre ici, car à partir de ce que j'ai lu et un peu de ce que j'ai essayé, il n'y a pas moyen d'ajouter des éléments de manière asynchrone, au moins si ces éléments sont DependencyObjects. J'ai essayé de créer mon instances de classe avec un BackgroundWorker et les ajouter à la collection dans le ProgressChanged gestionnaire d'événements, mais il déclenche une exception (certains filetage vs dependencyobjects problème).

Il y a une chose que je suis absent? Ou serais-je mieux de simplement abandonner ObservableCollection et l'écriture d'un bon vieux asynchrone en boucle pour ajouter des éléments?

Quel est exactement le type d'exception et son message?
"Le doit créer DependencySource sur le même Thread que l'DependencyObject"
Qu'en est Binding, IsAsync = True?

OriginalL'auteur oli.G | 2012-10-14