我们可以自动使用应用程序触发器调用后台任

时间:2018-02-22 07:28:52

标签: uwp uwp-xaml background-task

我已经使用Application触发器在UWP中为后台任务创建了一个应用程序。当我使用按钮手动触发事件时,它正在工作。

我想使用Application触发器在App最小化中调用后台任务事件。有可能吗?

我使用以下代码通过按钮点击触发后台任务:

 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 个答案:

答案 0 :(得分:0)

由于某种原因,您的代码使用SystemTrigger进行时区更改,但我认为这只是一次意外的复制粘贴错误。

当应用最小化时,将在当前VisibilityChanged上调用Window事件。您可以为此事件注册处理程序并在那里开始后台任务:

Window.Current.VisibilityChanged += (sender, e) => 
{
    if (!e.Visible)
    {
        //minimized, register background task
    }
};