Использование ObservableCollection <T>с фоновыми потоками - PullRequest
6 голосов
/ 14 октября 2008

Похоже, у Microsoft была отличная идея с ObservableCollection. Они отлично подходят для привязки и очень быстро работают в интерфейсе пользователя.

Тем не менее, требование переключения контекста на поток диспетчера каждый раз, когда вы хотите настроить его, кажется немного большим. Кто-нибудь знает лучшие практики для их использования? Это просто заполнить ICollection как объект сообщения на бизнес-уровне, а затем создать ObservableCollection на уровне пользовательского интерфейса? Как вы обрабатываете обновления коллекции в пользовательском интерфейсе?

Ответы [ 2 ]

2 голосов
/ 14 октября 2008

Является ли обновление ObservableCollection в потоке пользовательского интерфейса таким узким местом для вашего приложения? Если нет, придерживайтесь обновления в потоке пользовательского интерфейса. Помните, что на самом деле это не переключение контекста, которое происходит, когда вы запускаете что-то с помощью Dispatcher - вместо этого вы просто отправляете задание в поток пользовательского интерфейса, который является уже запущенным потоком, и ОС в любом случае переключит контекст в какой-то момент. , Поток пользовательского интерфейса извлекает отправленную работу из внутренней очереди и выполняет ее. Вы не заставляете контекст переключаться самостоятельно.

1 голос
/ 14 октября 2008

Вы можете использовать старый добрый BackgroundWorker также в WPF (как в Windows Forms). Он адаптируется к поточной модели WPF и обеспечивает хорошую абстракцию.

...