註冊一個後臺任務:後臺任務完成自發#с
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次)然後自發終止而不再啓動,解決這個問題需要重新註冊任務。可能是什麼原因?
我不知道在Win 8.0/8.1上的新應用程序如何,但在WinPhones上,每個任務/作業都有一些運行時限制:最大內存使用量和最大。單次運行時間有限。當超過任何這些措施時,任務/工作被終止並且其計劃被禁用,直到應用程序重新運行並且任務從頭開始重新計劃。在WinPhone框架中,限制非常緊密,<20秒和<30mb的內存,但這也取決於任務/作業的種類。你可能在這裏觀察到類似的行爲。如果有限制,請在MSDN上明確指出。只是一個猜測。 – quetzalcoatl
哦,並且任務/作業冒泡的任何未處理的異常也立即導致它的計劃被取消。 – quetzalcoatl
@quetzalcoatl,贏取手機上的應用程序8.1。 這不是因爲內存壓力。我總結了吐司通知而不是邏輯batskground任務。並再次出現錯誤:C –