Timetrigger not firing backgroundtask UWP
我和这个人在这里有同样的问题:UWP Timetrigger not working 但我不能评论这个问题,因为我的声望不够高,所以我创建了一个新问题。Timetrigger not firing backgroundtask UWP
正如我所说,我有同样的问题。我注册了后台任务,但没有任何反应。我的后台任务位于一个单独的项目(运行时组件)中。所以这不是问题。 这是我做了登记任务的方法:
public static BackgroundTaskRegistration Register(string name, string taskEntryPoint, IBackgroundTrigger trigger, IBackgroundCondition condition)
{
var foundTask = BackgroundTaskRegistration.AllTasks.FirstOrDefault(x => x.Value.Name == name);
if (foundTask.Value != null)
return (BackgroundTaskRegistration)foundTask.Value;
var builder = new BackgroundTaskBuilder();
builder.Name = name;
builder.TaskEntryPoint = taskEntryPoint;
builder.SetTrigger(trigger);
if (condition != null)
builder.AddCondition(condition);
return builder.Register();
}
,这是我怎么称呼它:
BackgroundTaskRegister.Register(nameof(NotificationTask), $"Epguides.Background.{_backgroundTaskName}", new TimeTrigger(30, true), null);
当我调试我的应用程序,并使用生命周期事件在Visual Studio来测试我的背景任务,一切工作正常。所以问题不在于任务。
当我检查BackgroundTaskRegistration结果时,我看到属性触发器为空。 MSDN page BackgroundTaskRegistration.Trigger它说,以下内容
这不适用于您的代码。对于所有不支持的触发器类型,此属性返回的值为null。
因此,据我所知,TimeTrigger是不支持的触发器类型,因为触发器为空。
宣布有一个人能解释为什么它不工作。我正在使用版本10.0.10586
您可以使用powershell确认您的任务是否已注册。 打开具有管理权限的powershell,并运行“Get-AppBackgroundTask”。列出所有已注册的任务。如果您无法从列表中找到您的任务,注册时会出现一些问题。
您是否将后台任务项目添加为主应用程序的引用?
你有没有调用BackgroundExecutionManager.RequestAccessAsync()?您应该在注册前从UI线程调用它。
- 我的后台任务与在商店timetrigger一个示例应用程序。它是从店面和搜索隐藏的,但你可以从下面的链接下载:
https://www.microsoft.com/store/p/ddlgbgtasktrial/9nblggh4s785
这个程序记数以15分钟的间隔timetrigger一个简单的后台任务。该任务仅将debugmessage输出到日志文件。该应用程序显示日志。如果工作正常,您可以以15分钟左右的间隔查看调试输出。
我确定该应用程序可以与Win10桌面10586.494和移动版14393.0一起使用。
这是第3点,失踪。我看到这个任务是通过powershell注册的,并感谢提示。我想知道如何检查注册是否成功。我再次检查了MSDN,看看是否在文章中提到了如何创建和注册后台任务([link](https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create)注册一个后台任务),它是,这是一个小记录,但我错过了,我也必须先删除访问,感谢您的帮助。 –
嗯,它似乎不工作,我想它的工作原理是因为我在通知中心看到了一条消息,但那只是一个测试,还有其他一些关于它为什么不起作用的想法? –
您是否尝试过示例应用程序?它的应用程序也无法正常工作,我不知道。 ... – pnp0a03
我与TimeTrigger(应用程序触发器工作没有任何问题)完全相同的问题,我跟着从MSDN regarding BackgroundTask in UWP每一步。但是,只有下面的“魔线”帮我解决 - 大感谢@CanolGökel为他的评论回复(我认为这值得单独的答案):
BackgroundExecutionManager.RemoveAccess(); // This is the magic line!
var backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync();
时间触发UWP background task sample(方案4),其中一部分正在为我工作。但是这条线根本不用在那里。相反,它检查期间NFC样品中使用,如果应用程序进行了更新:
private static async Task<bool> DoBackgroundRequestAccess()
{
String appVersion = String.Format("{0}.{1}.{2}.{3}",
Package.Current.Id.Version.Build,
Package.Current.Id.Version.Major,
Package.Current.Id.Version.Minor,
Package.Current.Id.Version.Revision);
if ((string)Windows.Storage.ApplicationData.Current.LocalSettings.Values["AppVersion"] != appVersion)
{
// Our app has been updated
Windows.Storage.ApplicationData.Current.LocalSettings.Values["AppVersion"] = appVersion;
// Call RemoveAccess
BackgroundExecutionManager.RemoveAccess();
}
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
return status == BackgroundAccessStatus.AlwaysAllowed
|| status == BackgroundAccessStatus.AllowedSubjectToSystemPolicy;
}
一件事:“零触发财产”是正常的行为,我相信。我还用timetrigger事件实现了bgtask并进行了多次调试,但该属性始终为空,并且该任务运行良好。如果可能,我会发布其他信息作为答案。 – pnp0a03
最后回答在这[线程](http://stackoverflow.com/questions/35024842/uwp-execute-backgroundtask-at-user-login)为我工作 –