Каков рекомендуемый способ выполнения асинхронных задач в WPF? - PullRequest
6 голосов
/ 18 февраля 2011

Существуют ли какие-либо стандартные инструменты или рекомендуемые подходы для выполнения асинхронных задач?

UPD Я понимаю, как использовать темы. Мне нужно только знать рекомендуемый способ WPF для блокировки пользовательского интерфейса при выполнении асинхронного вызова и как обновлять информацию о ходе выполнения.

Ответы [ 4 ]

7 голосов
/ 18 февраля 2011

Вы можете использовать несколько способов, например:

А начиная с .NET 4 предпочтительным способом является использование Tasks.

1 голос
/ 18 февраля 2011

Посмотрите на пост ниже, он описывает способ создания асинхронной команды делегата (с использованием BackgroundWorker). Я использовал такую ​​команду в нашем приложении, и она отлично работает, и в то же время она обеспечивает согласованный способ асинхронного выполнения действий.

Команда асинхронного делегата для ваши приложения WPF MVVM - AsyncDelegateCommand http://amazedsaint.blogspot.com/2010/10/asynchronous-delegate-command-for-your.html

Подобная реализация также упоминается здесь - Асинхронные команды WPF

0 голосов
/ 18 февраля 2011

В дополнение к стандартным нитям. Одна вещь, которую нужно использовать - это асинхронные методы многих классов, которые могут это сделать. Это включает запросы веб-службы, операции чтения / записи файла.

Одна вещь, на которую стоит обратить внимание, это сопрограммы, используемые в основном Caliburn.Micro . Но это не стандартный способ сделать это.

Также .NET 4 добавляет класс Task вместе с ParallelExtensions, который способен упростить некоторые операции асинхронного программирования. Но это по-прежнему неуклюже, поэтому в .NET 5 добавлена ​​модель асинхронного программирования, которая делает работу еще проще. Но бог знает, когда его выпустят.

0 голосов
/ 18 февраля 2011

зависит от того, что вы пытаетесь сделать асинхронным.например, при вызове службы WCF я бы использовал встроенный способ с шаблоном Completed, который выполняет сортировку для вас.Обычная фоновая работа Я бы использовал BackgroundWorker, так как вам больше не нужно беспокоиться о сортировке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...