Доступ в Интернет в длительной фоновой задаче

На чтение
1 мин
Дата обновления
10.03.2025
Формат:Самостоятельно с наставником
Директор по производству
Курс «Директор по производству» поможет вам освоить ключевые навыки управления производственными процессами и командой, чтобы стать эффективным лидером в этой сфере. Вы получите практические знания через реальные кейсы, проекты для портфолио и поддерживающую обратную связь от экспертов, что позволит вам уверенно принимать стратегические решения. Научитесь оптимизировать производственные процессы и повышать эффективность, а по окончании курса получите сертификат, подтверждающий ваши компетенции.
118650 ₽339000 ₽
9888 ₽/мес рассрочка
Подробнее

В моем приложении для Windows Phone 10 у меня есть длительная фоновая задача, запускаемая RfcommConnectionTrigger. Эта задача будет выполняться, пока мое устройство Bluetooth Rfcomm подключено.

Теперь я хочу достичь следующего:

  • Устройство Bluetooth отправляет некоторые данные в приложение на телефоне (работает)
  • Телефон ищет значение с помощью HTTP-запроса (не работает)
  • Телефон отправляет результат обратно к устройству Bluetooth (работающему)

Проблема с №2 в том, что как только я блокирую устройство, все HTTP-запросы по какой-то причине перестают работать. Я просто использую System.Net.Http.HttpClient для выполнения запроса, там ничего особенного не происходит. В частности, исключение создается в HttpClient.SendAsync .

Как обойти это ограничение?


Я нашел решение. Кажется, это полностью недокументированная «функция» — вам нужно добавить условие SystemConditionType.InternetAvailable к вашей фоновой задаче, чтобы разрешить ей использовать Интернет, когда устройство заблокировано. Я надеюсь, что это не означает, что когда телефон теряет доступ к Интернету, фоновая задача прекращается.

Это также означает, что теперь телефон должен быть подключен к Интернету, чтобы запустите фоновую задачу, которая все еще раздражает, но я думаю, что смогу с этим жить.