2017-06-08 14 views
0

最近LOB Win 8 RTアプリケーションをUWPに移植しました。バックグラウンドタスクを使用してWebサービスに接続し、データをダウンロード/アップロードしています。UWPバックグラウンドタスク - ExecutionTimeExceeded

低スペックのWin 10タブレットには、Win8アプリとUWPアプリがあります。 Win8アプリはうまく動作しますが、キャンセルイベントハンドラがエラーExcecutionTimeExceededで呼び出されるUWPアプリです。 これは、aproxの23秒後に発生します。すべてのデータをダウンロードするわけではありません(ただし、同じデバイス上のWin 8アプリでは同じです)。

私はラップトップ(高スペック)でアプリを実行したときに、バックグラウンドタスクはaproxの後40-50秒で正常に実行されます。

「ExectionTimeExceeded」はデバイスのCPUに関連していますか? これはWin 8 Store AppsとUWPの間で変更されていますか?

また、私はBackgroundTaskDeferralを使用しています。

答えて

1

「ExectionTimeExceeded」はデバイスのCPUに関連していますか?

Background​Task​Cancellation​Reason列挙によると、ExecutionTimeExceededのためにそれは言う:

それは実行するために、その割り当てられた時間を超えたため、バックグラウンドタスクが取り消されました。

UWPでは、バックグラウンドタスクにはCPUが10%を保証するというCPU制約があります。より多くの制約は、スライド22のthis PPTを参照することができます。しかし、ExecutionTimeExceeded理由を取り消すには、 "ウォールクォータクォータ"という制約が原因です。バックグラウンドタスクは、ロングトリガー(実行の場合25秒、キャンセルの場合5秒)を除き、30秒のウォールクロック使用に制限されています。したがって、あなたのバックグラウンドタスクは25秒未満で実行されなければなりません。タスクがキャンセルされ、ExecutionTimeExceededキャンセル理由が返されます。

これはWin 8 Store AppsとUWPの間で変更されていますか?

はいかもしれません。 Windows 8.1のように、すべてのバックグラウンドタスクにCPUとネットワークの使用制限がありますが、壁掛けのクォータ制限はありません。詳細はthis PPTのスライド21を参照してください。

しかし、私のラップトップ(高スペック)でアプリを実行すると、バックグラウンドタスクはaproxの後40-50秒で正常に実行されます。

これはあなたの側でなぜこれが起こったのかわかりません。あなたのラップトップがWindows 8.1であるか、間違った実行時間やその他の理由を計算するかもしれません。しかし、あなたのデバイスの高スペックにかかわらず、上記のように、バックグラウンドタスクは30秒に制限されました。

詳細はSupport your app with background tasksを参照してください。

+0

私のラップトップはWin 10 - 同じUWPアプリです。私はちょうど2分のスリープコマンドを持っていたバックグラウンドタスクでWebサービスを呼び出すことをテストしました。これは、BackgroundTaskDeferralを使用してエラーなしで完了しました。だから、なぜタブレットが25秒後にExcecutionTimeExceededを返すのか混乱している – RCairns

+0

これを答えとして確認できるようになりました。私がVSデバッガを使って実行していたために私がバックグラウンドタスクをもっと長く動かすことができた理由は、(ここに記載されているように)https://stackoverflow.com/questions/39235927/uwp-why-can-i-exceed-the- cpu-quota-my-background-task-using-timetrigger – RCairns

関連する問題