2

註冊一個後臺任務:後臺任務完成自發#с

string myTaskName = "Task"; 

    foreach (var cur in BackgroundTaskRegistration.AllTasks) 
     if (cur.Value.Name == myTaskName) 
     { 
      return; 
     } 

    await BackgroundExecutionManager.RequestAccessAsync(); 

    BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder 
    { 
     Name = "Task", 
     TaskEntryPoint = "Background.Task" 
    }; 
    taskBuilder.SetTrigger(new TimeTrigger(15, true)); 
    BackgroundTaskRegistration myFirstTask = taskBuilder.Register(); 

後臺任務在Windows運行時組件創建爲一個單獨的類:

public sealed class Task : IBackgroundTask 
     { 
      public async void Run(IBackgroundTaskInstance taskInstance) 
      { 
       BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 

//logic, send http get request, connect to db 

       deferral.Complete(); 
      } 
} 

當它的時間來執行任務 - 它可以運行隨機次數(1 - 15次)然後自發終止而不再啓動,解決這個問題需要重新註冊任務。可能是什麼原因? enter image description here

+1

我不知道在Win 8.0/8.1上的新應用程序如何,但在WinPhones上,每個任務/作業都有一些運行時限制:最大內存使用量和最大。單次運行時間有限。當超過任何這些措施時,任務/工作被終止並且其計劃被禁用,直到應用程序重新運行並且任務從頭開始重新計劃。在WinPhone框架中,限制非常緊密,<20秒和<30mb的內存,但這也取決於任務/作業的種類。你可能在這裏觀察到類似的行爲。如果有限制,請在MSDN上明確指出。只是一個猜測。 – quetzalcoatl

+1

哦,並且任務/作業冒泡的任何未處理的異常也立即導致它的計劃被取消。 – quetzalcoatl

+0

@quetzalcoatl,贏取手機上的應用程序8.1。 這不是因爲內存壓力。我總結了吐司通知而不是邏輯batskground任務。並再次出現錯誤:C –

回答

2

Windows Phone上的週期性的後臺任務在至少30分鐘的間隔被執行:當我要運行任務

VS顯示此錯誤。

Windows有一個內置計時器,它以15分鐘的時間間隔運行後臺任務。 請注意,在Windows Phone上,間隔爲30分鐘。

(來源:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977059.aspx?f=255&MSPPError=-2147217396

如果我是你,我會的時間間隔改變的東西更安全(如60分鐘) - 你總是可以稍後再試間隔較小。並看看oneShot標誌,在您的情況下,該標誌設置爲true。將其設置爲false以使您的任務運行多次。

此外,你的例外看起來不健康。你說它甚至發生在後臺任務是空的 - 你應該修復它,只是爲了安全。

我建議你使用Visual Studio中的生命週期特性手動啓動和調試你的backgorund任務幾次。也許還有其他的事情會導致你的任務死亡。

但首先檢查間隔。

+0

好的,我會試試。謝謝 –

+0

幫助!謝謝! –

+0

不客氣。 – Fred