后台任务自发完成C#

时间:2015-06-09 10:22:07

标签: c# windows-runtime windows-phone-8.1 background-process background-task

注册后台任务:

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();
            }
}

后台任务在Windows运行时组件中创建为一个单独的类:

catch {}

当是时候执行任务时 - 它可能会随机运行次数(1 - 15次)然后自发终止而不再启动,解决此问题需要重新注册任务。可能是什么原因?

当我想要运行任务时,VS显示此错误:enter image description here

1 个答案:

答案 0 :(得分:2)

在Windows Phone上,定期后台任务以至少30分钟的间隔执行。

  

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任务。也许还有其他因素会导致你的任务死亡。

但首先检查一下间隔。