Jobs
Getting Started
Section titled “Getting Started”| GitHub | |
| Downloads |
Frameworks
.NET
.NET MAUI
Blazor
Operating Systems
Android
iOS
tvOS
macOS
Linux
Windows
Web
Shiny Jobs allow you to run periodic background tasks. On Android, this is powered by WorkManager. On iOS, by BGTaskScheduler. On Windows, by COM-activated background tasks. On Linux, macOS, Blazor WebAssembly, and any other plain .NET host, jobs are run by an in-process managed JobManager driven by a recurring timer — jobs only execute while the host process is alive. On Blazor WebAssembly, Shiny.Jobs is the only package you need.
Jobs do not work on the iOS Simulator. You must test on a real device.
Platform Notes
Section titled “Platform Notes”| Platform | Package | Notes |
|---|---|---|
| Android | Shiny.Jobs |
WorkManager — true OS-managed background execution |
| iOS | Shiny.Jobs |
BGTaskScheduler — OS decides when |
| tvOS | Shiny.Jobs |
BGTaskScheduler — same as iOS, including the Info.plist setup. Does not run on the simulator |
| Windows | Shiny.Jobs |
COM-activated background tasks; tasks fire while the process is running (no background-mode triggering yet) |
| Linux / macOS / Plain .NET | Shiny.Jobs |
In-process managed JobManager on a recurring timer |
| Blazor WebAssembly | Shiny.Jobs |
Same in-process scheduler. No separate meta-package — reference Shiny.Jobs directly; battery and connectivity come from Shiny.Core. Call await host.Services.UseShiny() after Build() so the scheduler starts. |
Features
Section titled “Features”- Cross-platform background job execution
- Runtime criteria (internet access, charging, battery level)
- Full dependency injection support
- Stateful jobs (persists state across runs)
- Foreground execution option
Changed files
- MyApp/
Delegates/MyJob.cs
MyJob.cs
1using Shiny.Jobs;23namespace MyApp.Delegates;45public class MyJob : Job6{7 public MyJob(ILogger<MyJob> logger) : base(logger)8 {9 }1011 protected override Task RunJob(CancellationToken cancelToken)12 {13 return Task.CompletedTask;14 }15}

