【发布时间】:2017-03-27 23:11:21
【问题描述】:
我目前正在开发一个带有后台任务的应用程序,该任务应在用户设置的时间触发。例如,用户选择“01:45 PM”,应用程序正在计算从现在到那个时间的分钟数,并注册一个后台任务与时间触发器。不幸的是,后台任务根本没有触发。有时它只是在我启动计算机后触发。感谢您的任何建议,因为我一周后无法解决此问题。
我已经通过 VisualStudio 启动后台任务调试,所以问题不在 BackgroundTask.cs 文件中。
这是我的代码:
-
注册后台任务:
//I set the time to 15 minutes to see if this would work. It didn't... var trigger = new TimeTrigger(15, true); BackgroundTaskHelper.RegisterBackgroundTask("BackgroundTask.BackgroundTask", "BackgroundTask", trigger, null); -
后台任务注册方法:
public static async void RegisterBackgroundTask(string taskEntryPoint, string taskName, IBackgroundTrigger trigger, IBackgroundCondition condition) { foreach (var cur in BackgroundTaskRegistration.AllTasks) { if (cur.Value.Name == taskName) { cur.Value.Unregister(true); } } var builder = new BackgroundTaskBuilder(); builder.Name = taskName; builder.TaskEntryPoint = taskEntryPoint; builder.SetTrigger(trigger); if (condition != null) { builder.AddCondition(condition); } await BackgroundExecutionManager.RequestAccessAsync(); var task = builder.Register(); } Package.appxmanifest Package.appxmanifest, Image
感谢您的帮助!
【问题讨论】:
-
这可能有很多问题。我经常想到的两件事是:后台任务运行多长时间(超过 30 秒是标准 BGTask 的问题),第二:此任务的 CPU 使用率有多高以及 CPU 有多高用法,什么时候应该运行?这也可能会有所帮助:docs.microsoft.com/en-us/windows/uwp/launch-resume/…
-
目前只发送一个toast通知,所以持续时间不到30秒,cpu使用率很低。
-
它在触发时的 CPU 使用率是多少?因为如果主机的 CPU 使用率很高,有时任务不会触发。
标签: c# background uwp