【问题标题】:Running IBackgroundTask on Windows 10在 Windows 10 上运行 IBackgroundTask
【发布时间】:2016-04-18 06:54:16
【问题描述】:

我有一个 UAP 应用程序,当我在 Windows 10 手机上调试时,会自动触发 IBackgroundTask。当我在本地机器(Windows 10 x86)上调试时,根本不会调用它。怎么触发?

【问题讨论】:

标签: c# windows-10-universal background-task


【解决方案1】:

一种简单的方法是设置系统触发器。在您的清单中,您需要一个带有“系统事件”属性的“后台任务”声明。 在您的 C# 代码中,您必须注册您的任务,并且您可以将任务绑定到特定的事件系统,例如“NetworkStateChange”:

foreach (var task in BackgroundTaskRegistration.AllTasks)
{
    task.Value.Unregister(true);
}

var result = await BackgroundExecutionManager.RequestAccessAsync();
if (result == BackgroundAccessStatus.Denied)
{
    return;
}

BackgroundTaskBuilder builder = new BackgroundTaskBuilder();
builder.Name = "<task name>";
builder.TaskEntryPoint = "<task entry point>";

builder.SetTrigger(new SystemTrigger(SystemTriggerType.NetworkStateChange, false));
var registration = builder.Register();

使用此代码,您可以在网络上手动操作启动任务(切换 wifi 或拔下电缆)。

【讨论】:

  • 您好@t.ouvre,感谢您的回答。我的代码与您的相似,但我用您的 SystemTrigger 行替换了我的 SetTrigger,并且您的代码适用于 PC 和移动设备。我的 BackgroundTask 仅适用于移动设备。我赞成你的回答,因为它让我知道问题可能是我的特定触发器类型
【解决方案2】:

调试时,您可以直接从 Visual Studio 2015 触发后台任务。有一个名为 Lifecycle Events 的下拉菜单可让您调用 SuspendResume 和任何已注册的后台任务。事先在任务中设置断点。 (在我的例子中,实现后台任务的类称为NotifyChanges。)

【讨论】:

  • 由于某种原因这对我不起作用!使用t.ouvre的NetworkStateChanged,后台任务被触发,但是the background task is not listed
  • 我假设您在清单中列出了后台任务?
  • 是的,它们是:(更多在这里)背景任务>
  • 与我自己的唯一区别是我的运行在计时器上,例如&lt;Task Type="timer" /&gt;。显然,您可以向同一个后台任务添加多种类型的触发器——如果您尝试添加计时器触发器会发生什么?
  • 有趣的是,当我改用计时器触发器时,我的任务现在出现了。
猜你喜欢
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 2016-11-02
  • 2019-09-11
  • 2017-09-04
  • 2015-11-02
  • 2021-03-25
  • 2019-07-03
相关资源
最近更新 更多