かなり簡単な質問があります。
BackgroundAgents(定期的なエージェント)を使用して、 HttpWebRequestを実行するためにWiFi(インターネット)接続を必要とするいくつかのバックグラウンドタスクを実行します。2番目のリファレンスで述べたように、HttpWebRequestはサポートされていますが、問題は、Windows Phoneがロックされているか1分以上アイドル状態の場合、WiFiが無効になることです。
私が読んで、知るまで試したことに基づいて、2つの重要な質問があります。
- マイクロソフトは、事前定義された間隔に従って定期的にWiFiを有効にして、新着メールやその他の通知をチェックしていますか?答えが「はい」の場合、バックグラウンドエージェントはこの間隔で再スケジュールされ、実行されますか?
- 知るまで、HttpWebRequestは、ロックされている場合、または1分以上アイドル状態の場合、電話をスリープ解除しないことがわかりました。そうですか?多くの人が、電話がロックされている場合、または1分が経過している場合、HttpWebRequestは正常に機能すると述べています。私はそれをすることができませんでした。
ありがとう。
サンプルコード:
protected override void OnInvoke(ScheduledTask task)
{
ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(120));
MakeHttpRequest("test");
}
private void MakeHttpRequest(string position)
{
if (position != null)
{
var request = (HttpWebRequest)WebRequest.Create(
new Uri("http://mydomain.com/Testing/Details/"+position));
request.BeginGetResponse(r =>
{
var httpRequest = (HttpWebRequest)r.AsyncState;
var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r);
using (var reader = new StreamReader(httpResponse.GetResponseStream()))
{
var response = reader.ReadToEnd();
Deployment.Current.Dispatcher.BeginInvoke(new Action(() =>
{
}));
}
}, request);
}
this.NotifyComplete();
}
PS:アプリケーションがUSBケーブルを使用してコンピューターに接続されているときにこのコードを実行すると、すべてが正常に実行されることに注意してください。そのため、HttpWebRequestを実行するために電話とWiFiをスリープ解除しないバックグラウンドワーカーに問題があると思います。