我正在尝试设置一个后台任务运行每15分钟从我的UWP应用程序,但尽管应用程序注册成功,它没有被触发。这里有很多关于这方面的资料,所以为了快速总结一下我到目前为止所做的工作:
IBackgroundTask
的BackgroundSync.cs。下面是我注册任务的代码:
private static async Task<BackgroundTaskRegistration> SetupBackgroundSync()
{
await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
var TaskName = "BackgroundSync";
foreach (var t in BackgroundTaskRegistration.AllTasks)
{
if (t.Value.Name == TaskName)
{
t.Value.Unregister(true);
}
}
builder.Name = TaskName;
builder.TaskEntryPoint = typeof(Background.BackgroundSync).FullName;
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
builder.SetTrigger(new TimeTrigger(15, false));
BackgroundTaskRegistration task = builder.Register();
return task;
}
此后台任务问题的测试项目中的代码:
RegistrationHelper.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.ApplicationModel.Background;
namespace Tasks
{
public sealed class RegistrationHelper
{
public async Task<BackgroundTaskRegistration> RegisterTasks()
{
//Returns AllowedSubjectToSystemPolicy
await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
var TaskName = "BackgroundTask1";
foreach (var t in BackgroundTaskRegistration.AllTasks)
{
if (t.Value.Name == TaskName)
{
t.Value.Unregister(true);
}
}
builder.Name = TaskName;
builder.TaskEntryPoint = typeof(BackgroundTask1).FullName;
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
builder.SetTrigger(new TimeTrigger(15, false));
BackgroundTaskRegistration task = builder.Register();
return task;
}
}
}
在这里调用了我的app.xaml.cs。
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
Tasks.RegistrationHelper registrationhelper = new Tasks.RegistrationHelper();
var task = registrationhelper.RegisterTasks();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.ApplicationModel.Background;
namespace Tasks
{
public sealed class BackgroundTask1 : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
while (true) { }
}
}
}
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="Tasks.BackgroundTask1">
<BackgroundTasks>
<Task Type="systemEvent" />
<Task Type="timer" />
</BackgroundTasks>
</Extension>
</Extensions>
这可能不是您的解决方案,但有时,我的计时器任务也不会启动,在这种情况下有助于下一步
此外,您提供的代码有几个可能导致问题的问题点
本文向大家介绍uwp 取消注册任务,包括了uwp 取消注册任务的使用技巧和注意事项,需要的朋友参考一下 示例
我正在使用第三方rest api来查询数据并在我的应用程序中显示它。我得在晚上12点左右执行任务。它将执行一个后台任务,从rest api查询数据,并更新live tile和生成通知。我想只使用C#来完成这个任务。我不知道做这个任务最好的方法是什么。但是我使用下面的代码来执行后台任务,这是不起作用的。不知道为什么? 从后台任务中,我正在查询数据并生成toast通知。 任何有关此代码无法工作的原因或
说明 在后台任务中,因为是运行在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
问题内容: 我正在尝试使用Heroku为我的Django应用设置后台任务。 我正在按照Heroku文档中说明的步骤进行操作。但是,我一开始就已经陷入困境。 我已经成功安装了RQ: 我创建了文件,其中包含与文档中完全相同的代码。 但是,当我尝试运行时: 我收到以下错误: 经过研究,我意识到没有配置。我现在已经安装了,并且在运行时可以找到它。不幸的是,这似乎并不是我做错的唯一事情,因为我仍然遇到相同的
问题内容: 我有一个Django网站,并且一个页面上有一个按钮(或链接),单击该按钮将启动一个运行时间较长的任务。显然,我想将此任务作为后台任务启动,并立即将结果返回给用户。我想使用一种简单的方法来实现此目的,该方法不需要我安装和学习例如Celery这样的全新消息传递体系结构。我不想用celery!我只想使用一种简单的方法,就可以在接下来的半小时左右的时间内进行设置并开始运行。在Django中没有