当前位置: 首页 > 知识库问答 >
问题:

windows phone 8.1中的后台任务

邓浩漫
2023-03-14

我正在使用第三方rest api来查询数据并在我的应用程序中显示它。我得在晚上12点左右执行任务。它将执行一个后台任务,从rest api查询数据,并更新live tile和生成通知。我想只使用C#来完成这个任务。我不知道做这个任务最好的方法是什么。但是我使用下面的代码来执行后台任务,这是不起作用的。不知道为什么?

BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
taskBuilder.Name = taskName;
SystemTrigger trigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
taskBuilder.SetTrigger(trigger);
taskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
taskBuilder.TaskEntryPoint = typeof(BackgroundTask.BackgroundTask).FullName;
taskBuilder.Register();

从后台任务中,我正在查询数据并生成toast通知。

任何有关此代码无法工作的原因或此任务何时触发的帮助。有什么更好的方法来完成以上任务吗?

谢谢

共有1个答案

岳英耀
2023-03-14

关于您没有工作的代码...

对于Windows Phone 8.1与Windows 8\8.1不同,您需要在注册任务之前调用BackgroundExecutionManager.RequestAccessAsync()(搜索MSDN\Internet)以查找任何后台任务,而在Windows中,这只对某些任务是必需的。请确保您的代码在注册后台任务之前调用该值并验证返回的值。

关于你的任务是否“成功”...

  1. 如果您的应用程序是需要根据时间运行的Windows Phone XAML应用程序,我建议使用TimeTriggerMaintenanceTrigger触发器(而不是SystemTrigger)。这些都是背景任务。有关后台任务和TimeTriggerMaintenanceTrigger文档链接的一般信息,请参阅此MSDN链接:http://MSDN.microsoft.com/en-us/library/windows/apps/xaml/hh977056.aspx.
  2. 如果您的应用程序是Windows Phone Silverlight 8.0应用程序,则可以使用后台代理,特别是PeriodicTaskResourceInsensiveTask。有关详细信息,请参阅其他人发布的链接或搜索MSDN\Internet。
  3. 如果您的应用程序是Windows Phone Silverlight 8.1应用程序,则可以使用上面1或2中的选项。
 类似资料:
  • 说明 在后台任务中,因为是运行在task进程,所以无法使用协程和协程客户端。如果你要操作数据库或Redis,一定要配置同步的连接池。 配置 项目配置文件中mainServer.configs.task_worker_num一定要配置为大于0,否则无法使用后台任务。 定义任务执行类 <?php namespace Test; use Imi\Task\TaskParam; use Imi\Task

  • 问题内容: 我想知道哪种方法是在Java中实现某种后台任务的最有效方法(我想那将是某种非阻塞线程)。更准确地说- 我有一些Java代码,然后在某个时候需要执行长时间运行的操作。我想做的是在后台执行该操作,以便程序的其余部分可以继续执行,并且当该任务完成时,只需更新一些特定的对象即可。然后,其他组件将检测到此更改。 问题答案: 您应该使用线程池, http://java.sun.com/docs/b

  • Celery 是一个 Python 的任务队列,包含线程/进程池。曾经有一个 Flask 的集成, 但在 Celery 3 重构了内部细节后变得不必要了。本指导补充了如何妥善在 Flask 中使用 Celery 的空白,但假设你已经读过了 Celery 官方文档中的教程 使用 Celery 的首要步骤 安装 Celery Celery 提交到了 Python Package Index (PyPI

  • 问题内容: 我正在尝试使用Heroku为我的Django应用设置后台任务。 我正在按照Heroku文档中说明的步骤进行操作。但是,我一开始就已经陷入困境。 我已经成功安装了RQ: 我创建了文件,其中包含与文档中完全相同的代码。 但是,当我尝试运行时: 我收到以下错误: 经过研究,我意识到没有配置。我现在已经安装了,并且在运行时可以找到它。不幸的是,这似乎并不是我做错的唯一事情,因为我仍然遇到相同的

  • 问题内容: 如何杀死linux中最后一个生成的后台任务? 例: 问题答案: bash中有一个特殊的变量: $!扩展为在后台执行的最后一个进程的PID。

  • 问题内容: 我尝试定期在JavaFX应用程序后台线程中运行,这会修改一些GUI属性。 我想我知道如何使用Task和Service类,并且不知道如何在不使用Thread#sleep()方法的情况下运行此类定期任务。这将是很好,如果我可以使用一些Executor从Executors编造的方法) 我尝试Runnable每5秒运行一次,这会重新启动,javafx.concurrent.Service但立即