我想知道遠程設備調用的後臺任務的侷限性。我在微軟文檔中發現的所有內容都是30秒後臺任務的通用限制。UWP中遠程應用程序服務後臺任務的侷限性
但是我簡單的測試表明,它不是從其他設備稱爲應用服務的情況。 (我不知道規則的應用服務,雖然我不包括他們在我的測試。)
這裏是我的測試方法:
我把這個代碼的應用程序的OnBackgroundActivated
並註冊了TimeTrigger
後臺任務。
for (int i = 0; i < 100; i++)
{
Common.ToastFunctions.SendToast((i * 5).ToString() + " seconds");
await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(5));
}
(而且我得到了延期所以任務將不會意外,因爲await
操作關閉)
我Toast通知20-25秒,並沒有什麼之後。所以這個過程在30秒內被殺死,這與官方文件一致。
然後我把完全相同的代碼在RequestReceived
事件我AppServiceConnection
的,而這種代碼OnBackgroundActivated
(基本上設置RequestReceived
事件,並得到延期:
this._backgroundTaskDeferral = args.TaskInstance.GetDeferral();
args.TaskInstance.Canceled += OnTaskCanceled;
var details = args.TaskInstance.TriggerDetails as AppServiceTriggerDetails;
if (details?.Name == "com.ganjine") //Remote Activation
{
_appServiceconnection = details.AppServiceConnection;
_appServiceconnection.RequestReceived += OnRequestReceived;
_appServiceconnection.ServiceClosed += AppServiceconnection_ServiceClosed;
}
然後我創建一個連接併發送了一些數據從這個後臺任務從另一個設備(使用羅馬APIs)
這一次,它沒有停止30秒之前。我的循環是100
迭代,我得到了敬酒指示後臺任務沒有停止,是能夠運行〜500秒。
但是,這是我的循環,它可能還有一個更長的循環更持續更多的。
這是預期的行爲?從遠程設備調用的AppService後臺任務的確切限制是什麼?
更新:似乎遠程應用程序(誰調用此後臺任務)需要保持打開狀態。 (可能是因爲連接對象應該保持活着?)。如果關閉它,後臺應用程序服務將在幾秒鐘後終止。
所以在手機上的應用程序服務將保留沒有時間限制的開放,只要從PC調用者的應用程序保持打開狀態,對不對? (除非電話因資源不足而終止服務) –
@MahdiGhiasi是的。 –