предпочтительный метод выполнения фоновых задач в поведении команд WPF MVVM - PullRequest
2 голосов
/ 20 ноября 2011

я знаю, что этот вопрос немного субъективен ... но я в основном ищу посмотреть, есть ли лучший способ сделать это, чем я придумал.

У меня есть базовая настройка MVVM, где древовидная структура привязана к древовидной структуре.

эта структура имеет узлы, которые загружаются по требованию.

когда я раскрываю узел, я запускаю командное поведение, в этом случае я запрашиваю необходимые данные и добавляю их в узел.

Мой первый инстинкт - использовать фонового работника (в рамках события поведения команды), которому я передаю идентификатор узла, который расширяю. по завершении работник найдет этот узел и добавит его дочерние элементы.

Это подход, который я унаследовал от разработки winforms. Любопытно, есть ли лучшее архитектурное решение для этого.

Ответы [ 2 ]

6 голосов
/ 20 ноября 2011

В настоящее время мы используем Task Parallel Library (TPL) , потому что это упрощает передачу данных в метод для выполнения и делает ваш код более похожим на типичный синхронный метод, который обычно легче читать и Понимаю. Это также приближает вас к асинхронному и ожидающему стилю кодирования, который появится в .NET 4.5 и действительно важен для программирования под Windows 8.

2 голосов
/ 20 ноября 2011

Ответ Билла с шаблоном async / await хорош. Для 4.0 я предпочитаю объект Task:

Task.Factory.StartNew(Action);

Хотя это зависит от того, что вы делаете. Иногда я использую BackgroundWorker для поддержки прогресса.

...