后台任务自发完成C#
Background task spontaneous completion C#
注册后台任务:
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 运行时组件中创建为单独的 class:
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次)然后自发终止不再开始,解决这个问题需要重新注册任务。可能是什么原因?
VS 在我想要 运行 任务时显示此错误:
开启 Windows Phone 周期性后台任务以至少 30 分钟的间隔执行。
Windows has a built-in timer that runs background tasks in 15-minute intervals. Note that on Windows Phone, the interval is 30 minutes.
(来源:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977059.aspx?f=255&MSPPError=-2147217396)
如果我是你,我会将时间间隔更改为更安全的值(例如 60 分钟)- 你以后可以随时尝试更小的间隔。并查看 oneShot
标志,在您的情况下该标志设置为 true
。将其设置为 false
可使您的任务 运行 不止一次。
另外,您的异常看起来也不健康。你说它甚至发生在后台任务为空的情况下 - 为了安全起见,你应该修复它。
我建议您使用 Visual Studio 中的生命周期功能手动启动和调试您的 backgo运行d 任务几次。可能还有其他的事情导致你的任务挂掉。
但首先检查间隔。
注册后台任务:
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 运行时组件中创建为单独的 class:
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次)然后自发终止不再开始,解决这个问题需要重新注册任务。可能是什么原因?
VS 在我想要 运行 任务时显示此错误:
开启 Windows Phone 周期性后台任务以至少 30 分钟的间隔执行。
Windows has a built-in timer that runs background tasks in 15-minute intervals. Note that on Windows Phone, the interval is 30 minutes.
(来源:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977059.aspx?f=255&MSPPError=-2147217396)
如果我是你,我会将时间间隔更改为更安全的值(例如 60 分钟)- 你以后可以随时尝试更小的间隔。并查看 oneShot
标志,在您的情况下该标志设置为 true
。将其设置为 false
可使您的任务 运行 不止一次。
另外,您的异常看起来也不健康。你说它甚至发生在后台任务为空的情况下 - 为了安全起见,你应该修复它。
我建议您使用 Visual Studio 中的生命周期功能手动启动和调试您的 backgo运行d 任务几次。可能还有其他的事情导致你的任务挂掉。
但首先检查间隔。