How to Implement Background Tasks in UWP

Posted by JaneDoe on

Background tasks allow your UWP app to run code even when it's not in the foreground. This is essential for scenarios like fetching data, processing sensor information, or handling push notifications.

Creating a Background Task

First, add a new project to your solution of type Windows Runtime Component. This will host the background code.

using Windows.ApplicationModel.Background;

public sealed class MyBackgroundTask : IBackgroundTask
{
    public void Run(IBackgroundTaskInstance taskInstance)
    {
        // TODO: Add background code here.
    }
}

Registering the Task

Register the task from your foreground app, usually in App.xaml.cs or when the user enables a feature.

var builder = new BackgroundTaskBuilder
{
    Name = "MyTask",
    TaskEntryPoint = "MyBackgroundTaskNamespace.MyBackgroundTask"
};

builder.SetTrigger(new TimeTrigger(15, false)); // every 15 minutes
var registration = builder.Register();

Manifest Declarations

Don't forget to declare the background task in Package.appxmanifest:

<Extension Category="windows.backgroundTasks">
    <BackgroundTask
        Type="timer"
        EntryPoint="MyBackgroundTaskNamespace.MyBackgroundTask"/>
</Extension>

Common Pitfalls

  • Background tasks have limited CPU time; keep them short.
  • Use Deferral when performing async work.
  • Ensure the task is declared for the correct trigger type.

Comments

MikeS· Sep 11, 2025

Great overview! I ran into an issue where the task never fired until I added the BackgroundAccessStatus check. Anyone else?

AzureDev· Sep 12, 2025

Remember to call BackgroundExecutionManager.RequestAccessAsync() before registering.