Assincronamente adicionando ao ObservableCollection (ou uma alternativa)

Aqui está o que eu tenho - um ListBox com um ItemsSource definido para umObservableCollection<T> - onde T é minha classe personalizada representando um arquivo, contendo apenas 2 DependencyProperties: Filename e ThumbnailPath. - A caixa de listagem também possui um DataTemplate personalizado definido, para exibir uma imagem e um nome de arquivo bem abaixo dela.

O objetivo da caixa de listagem é exibir arquivos de vídeo na pasta atual (selecionada em um TreeView), com miniaturas (geradas de forma assíncrona; não fazem parte desse problema).

Então, quando eu mudo a pasta no TreeView, o ObservableCollection é limpo e preenchido novamente, o que é refletido automaticamente nos itens do ListBox.

Aqui está o problema: a interface do usuário pára de responder e leva vários segundos para ser atualizada. Novamente, as miniaturas não têm significado aqui (tentei desativá-las).eu acho que O que leva mais tempo é a construção de 50-100 instâncias da minha classe personalizada e sua representação visual - tem que inicializar um objeto de imagem para cada um. Mas é apenas meu palpite - você poderia por favor confirmar ou excluir a possibilidade?

Estou começando a pensarObservableCollection pode não ser o caminho a percorrer aqui, desde que eu li e um pouco do que eu tentei, não há maneira de adicionar itens de forma assíncrona, pelo menos, se esses itens são DependencyObjects. Eu tentei criar minhas instâncias de classe com um BackgroundWorker e adicioná-las à coleção no manipulador de eventos ProgressChanged, mas lança uma exceção (algum problema threading vs dependencyobjects).

Existe algo que eu estou sentindo falta? Ou seria melhor simplesmente abandonar o ObservableCollection e escrever um bom loop async para adicionar os itens?

questionAnswers(2)

yourAnswerToTheQuestion