Асинхронное добавление в ObservableCollection (или альтернативу)

Вот's, что у меня есть - ListBox с ItemSource установлен вObservableCollection - где T - мой пользовательский класс, представляющий файл, содержащий только 2 свойства DependencyProperties: Filename и ThumbnailPath. - В списке также определен пользовательский шаблон DataTemplate для удобного отображения изображения и имени файла под ним.

Назначение списка состоит в отображении видеофайлов в текущей папке (выбранной в TreeView) с миниатюрами (генерируемых асинхронно; не является частью этой проблемы).

Поэтому, когда я меняю папку в TreeView, коллекция ObservableCollection очищается и снова заполняется, что автоматически отражается в элементах ListBox.

Вот'Проблема: пользовательский интерфейс перестает отвечать на запросы, и для его обновления требуется несколько секунд. Опять же, миниатюры здесь не имеют значения (я пытался их отключить).Я думаю что занимает больше всего времени - это создание 50-100 экземпляров моего пользовательского класса и их визуальное представление - он должен инициализировать объект Image для каждого из них. Но это'Это только мое предположение - не могли бы вы подтвердить или исключить возможность?

я начинаю думатьObservableCollection может и не идти здесь, так как из того, что я прочитал и немного из того, что я пытался, тамНевозможно добавлять элементы асинхронно, по крайней мере, если эти элементы являются объектами DependencyObject. Я попытался создать экземпляры своего класса с помощью BackgroundWorker и добавить их в коллекцию в обработчике событий ProgressChanged, но он выдает исключение (некоторые проблемы с потоками и объектами зависимостей).

Есть ли что-то, что ям отсутствует? Или мне было бы лучше просто отключить ObservableCollection и написать старый добрый асинхронный цикл для добавления элементов?

Ответы на вопрос(2)

Ваш ответ на вопрос