Нужно ли мне BackgroundWorker или нет? - PullRequest
0 голосов
/ 21 февраля 2012

Я пишу какое-то приложение, которое будет отправлять http запросы на сервер.Мое приложение будет отправлять запросы с некоторым интервалом по таймеру.например, мне нужно отправить 1 тип запросов с интервалом времени 2 секунды, 2-й тип запросов - 10 секунд и так далее.я понимаю, что лучше иметь один планировщик, который будет выдвигать мои запросы.но вопрос в том, как я могу отправлять запросы и обрабатывать ответы без зависания интерфейса?

ps прямо сейчас у меня есть класс MyAdapter, который инкапсулирует всю работу с запросами и ответами, и класс MyScheduler, который отправляет запросы по таймеру.

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

но вопрос в том, как я могу отправлять запросы и обрабатывать ответы без зависания интерфейса?

Вы можете использовать таймеры для отправки ваших запросов через равные промежутки времени. Если вам нужно обновить свой пользовательский интерфейс после успешного выполнения запроса, вам может понадобиться использовать Dispatcher.Invoke или Control.Invoke.

1 голос
/ 21 февраля 2012

У вас есть несколько вариантов выполнения работы в фоновом режиме, а пользовательский интерфейс остается отзывчивым:

  • Старый, но надежный: BackgroundWorker уже давно работает с .net Framework и будет отлично работать в соответствии с вашими требованиями. Множество примеров можно найти на этом сайте и в других местах.

  • Уровень техники : класс Task, доступный с .NET 4, считается улучшением по сравнению с BackgroundWorker .

  • Совершенно новый : Async расширения - это новый способ делать «фоновые вещи». Нет необходимости многопоточности и ручной синхронизации, все «просто работает». Однако на данный момент это только на этапе «предварительного просмотра сообщества».

1 голос
/ 21 февраля 2012

Тогда вы действительно должны использовать BackGroundWorker, и если вам нужно обновить пользовательский интерфейс, вы можете использовать метод Dispatcher.Invoke ().

...