2
votes

I have created an application in UWP for background task using Application trigger. It is working when I trigger the event manually using button.

I want to call the background task event in App minimization using Application trigger. Is it possible?

I used following code to trigger background task with button click:

 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

1 Answers

0
votes

Your code for some reason uses SystemTrigger for time zone change, but I presume that is just an accidental copy-paste error.

When the app is minimized, the VisibilityChanged event will be called on the current Window. You can register a handler for this event and start your background task there:

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