在一个长运行后台任务中上网
Internet access in a long-running background task
在我的 Windows Phone 10 应用程序中,我有一个 运行ning 后台任务,由 RfcommConnectionTrigger 触发。只要我的蓝牙 Rfcomm 设备已连接,此任务就会 运行。
现在我要实现的是:
- 蓝牙设备向 phone 上的应用程序发送一些数据(工作)
- phone 使用 HTTP 请求查找值(无效)
- phone将结果回传给蓝牙设备(工作中)
#2 的问题是,一旦我锁定设备,由于某种原因所有 HTTP 请求都开始失败。我只是使用 System.Net.Http.HttpClient
来发出请求,没有什么特别的。更具体地说,在 HttpClient.SendAsync
.
中抛出异常
如何绕过此限制?
I found the solution. 这似乎是一个完全未记录的 "feature" -- 您需要向您的后台任务添加一个 SystemConditionType.InternetAvailable
条件以允许它在设备锁定时使用互联网.我希望这并不意味着当 phone 无法访问互联网时,后台任务就会被终止。
这也意味着 phone 现在需要连接到互联网才能启动后台任务,这仍然很烦人,但我想我可以接受。
在我的 Windows Phone 10 应用程序中,我有一个 运行ning 后台任务,由 RfcommConnectionTrigger 触发。只要我的蓝牙 Rfcomm 设备已连接,此任务就会 运行。
现在我要实现的是:
- 蓝牙设备向 phone 上的应用程序发送一些数据(工作)
- phone 使用 HTTP 请求查找值(无效)
- phone将结果回传给蓝牙设备(工作中)
#2 的问题是,一旦我锁定设备,由于某种原因所有 HTTP 请求都开始失败。我只是使用 System.Net.Http.HttpClient
来发出请求,没有什么特别的。更具体地说,在 HttpClient.SendAsync
.
如何绕过此限制?
I found the solution. 这似乎是一个完全未记录的 "feature" -- 您需要向您的后台任务添加一个 SystemConditionType.InternetAvailable
条件以允许它在设备锁定时使用互联网.我希望这并不意味着当 phone 无法访问互联网时,后台任务就会被终止。
这也意味着 phone 现在需要连接到互联网才能启动后台任务,这仍然很烦人,但我想我可以接受。