背景任务没有';不要开火
本文关键字:开火 任务 背景 | 更新日期: 2023-09-27 18:29:05
我的后台任务注册但从不启动。我尝试删除整个项目以删除所有任务,更改了TaskBuilder
类的名称,并使用了不同的条件。但似乎什么都不起作用。我有时会收到一个错误,说它不能向我显示错误。
我在这里构建它:
public async void RegisterBackgroundTask()
{
var taskRegistered = false;
var TaskName = "TimeTriggeredTask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == TaskName)
{
taskRegistered = true;
break;
}
}
var tommorowMidnight = DateTime.Today.AddDays(1);
var timeTilMidnight = tommorowMidnight - DateTime.Now;
var minutesTilMidnight = (uint)timeTilMidnight.TotalMinutes;
if (!taskRegistered)
{
var task = RegisterBackgroundTask("TaskBuilderClass",
"TimeTriggeredTask",
new TimeTrigger(minutesTilMidnight, false),
new SystemCondition(SystemConditionType.InternetAvailable));
await task;
CheckPremieres();
}
}
生成器方法:
public static async Task<BackgroundTaskRegistration> RegisterBackgroundTask(String taskEntryPoint, String name, IBackgroundTrigger trigger, IBackgroundCondition condition)
{
await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
builder.Name = name;
builder.TaskEntryPoint = taskEntryPoint;
builder.SetTrigger(trigger);
builder.AddCondition(condition);
BackgroundTaskRegistration task = builder.Register();
//
// Remove previous completion status from local settings.
//
var settings = ApplicationData.Current.LocalSettings;
settings.Values.Remove(name);
return task;
}
这是我也添加到清单中的任务构建器类:
public sealed class TaskBuilderClass : IBackgroundTask
{
//
// The Run method is the entry point of a background task.
//
public void Run(IBackgroundTaskInstance taskInstance)
{
//
// Query BackgroundWorkCost
// Guidance: If BackgroundWorkCost is high, then perform only the minimum amount
// of work in the background task and return immediately.
//
var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;
var settings = ApplicationData.Current.LocalSettings;
settings.Values["BackgroundWorkCost"] = cost.ToString();
App.nHandler.CheckPremieres();
}
}
我很确定任务需要在它自己的Windows运行时组件中;我一直都是这样做的。GitHub上的Microsoft示例在一个单独的项目中也有这些任务。
试着这样做。不要忘记引用应用程序中新创建的项目。这是我最常忘记的事情。
完成此操作后,我还建议您首先从Visual Studio的"调试位置"工具栏触发该任务,以确保一切配置正确。它应该出现在下拉列表中,并且应该在此处正确工作,否则它也无法按计划工作。