我们可以使用应用程序触发器自动调用后台任务吗?
Posted
技术标签:
【中文标题】我们可以使用应用程序触发器自动调用后台任务吗?【英文标题】:Can we call background task using application trigger automatically? 【发布时间】:2018-02-22 07:28:52 【问题描述】:我在 UWP 中使用应用程序触发器为后台任务创建了一个应用程序。当我使用按钮手动触发事件时它正在工作。
我想使用应用程序触发器在应用程序最小化中调用后台任务事件。有可能吗?
我使用以下代码通过按钮点击触发后台任务:
public MainPage()
this.InitializeComponent();
this.Button_Click();
private void Button_Click(object sender, RoutedEventArgs e)
var taskRegistered = false;
var exampleTaskName = "ExampleBackgroundtask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
if (task.Value.Name == exampleTaskName)
taskRegistered = true;
break;
if (!taskRegistered)
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.ExampleBackgroundtask";
builder.SetTrigger(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));
BackgroundTaskRegistration task = builder.Register();
task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
【问题讨论】:
【参考方案1】:您的代码出于某种原因使用SystemTrigger
更改时区,但我认为这只是一个意外的复制粘贴错误。
当应用最小化时,VisibilityChanged
事件将在当前Window
上调用。您可以为此事件注册一个处理程序并在那里启动您的后台任务:
Window.Current.VisibilityChanged += (sender, e) =>
if (!e.Visible)
//minimized, register background task
;
【讨论】:
以上是关于我们可以使用应用程序触发器自动调用后台任务吗?的主要内容,如果未能解决你的问题,请参考以下文章
即使未打开django应用程序页面,Django如何也能自动触发任务
我启动windows任务管理器,发现有的程序明明没有运行,但是在进程里还是会有不少的程序?是后台吗?