using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace BuildingBlocks.EventStoreDB.BackgroundWorkers; public class BackgroundWorker : BackgroundService { private readonly ILogger logger; private readonly Func perform; public BackgroundWorker( ILogger logger, Func perform ) { this.logger = logger; this.perform = perform; } protected override Task ExecuteAsync(CancellationToken stoppingToken) => Task.Run(async () => { await Task.Yield(); logger.LogInformation("Background worker stopped"); await perform(stoppingToken); logger.LogInformation("Background worker stopped"); }, stoppingToken); }