2017-06-08 89 views
0

我最近已將我的LOB Win 8 RT App移植到UWP。我正在使用後臺任務連接到Web服務並下載/上傳數據。UWP後臺任務 - ExecutionTimeExceeded

在低規格贏10平板我有Win8應用程序和UWP應用程序。 Win8應用程序表現良好,但UWP應用程序取消事件處理程序的調用錯誤爲ExcecutionTimeExceeded。 這發生在aprox 23秒後。它不會下載所有數據(而同一設備上的Win 8應用程序則會)。

但是,當我在筆記本電腦上運行應用程序(更高規格)後,後臺任務在aprox 40-50秒後成功運行。

「ExecutionTimeExceeded」是否與設備的CPU相關? Win 8 Store應用程序和UWP之間是否發生了這種變化?

此外 - 我正在使用BackgroundTaskDeferral。

回答

1

「ExecutionTimeExceeded」是否與設備的CPU相關?

Background​Task​Cancellation​Reason枚舉,爲ExecutionTimeExceeded它說:

後臺任務被取消,因爲它超過了規定的時間來運行。

在UWP中,後臺任務確實有CPU約束,CPU需要保證10%。您可以參考this PPT的第22張幻燈片。但是對於ExecutionTimeExceeded取消原因,應該由「掛鐘配額」的約束引起。後臺任務僅限於30秒的掛鐘使用,除了渴望觸發(運行25秒,取消5秒)。所以你的後臺任務應該執行少於25秒,如果超過,任務將被取消並返回ExecutionTimeExceeded取消原因。

Win 8 Store應用程序和UWP之間有這個變化嗎?

可能是的。看起來在Windows 8.1中,所有後臺任務都有CPU和網絡使用配額,但沒有掛鐘限制。更多詳情請參考this PPT的幻燈片21。

但是,當我在我的筆記本電腦上運行應用程序(更高的規格)後,後臺任務成功運行後約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配額與 - 我 - 後臺任務 - 使用 - timetrigger – RCairns