Tutorials Design Patterns in C#
Hosted Service Pattern — Complete Guide
Hosted Service Pattern — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Design Patterns in C# on Toolliyo Academy.
On this page
Design Patterns in C# · Lesson 58 of 69
Hosted Service Pattern
GoF Core ✓ → Enterprise ✓ → Cloud & Craft
Cloud & Craft · 3 — Microservices & interviews · ~10 min · Module 7: ASP.NET Core Architecture Patterns
What is this?
IHostedService/BackgroundService runs long-running work inside the host — queues, relays, periodic jobs.
Why should you care?
ShopNest outbox relay and cache warmers need a process lifetime hook, not a one-off console.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
public sealed class OutboxRelayService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("relay tick");
await Task.Delay(1000, stoppingToken);
}
}
}
// builder.Services.AddHostedService<OutboxRelayService>();
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- BackgroundService loops until cancellation.
- Respect stoppingToken.
- For multi-instance jobs, combine with leader election or queue competing consumers.
Practice next
- Add a hosted service to ShopNest API.
- Honor CancellationToken.
- Scope DbContext per iteration carefully.
- Process outbox batch each tick.
- Add graceful delay on shutdown.
Remember
Background work in-host. Cancel cleanly. Mind multi-instance.
ShopNest outbox hosted service
API host runs relay loop.
Outcome: Events publish without a separate worker binary (small scale).
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!