From db9ddecff371cf25fb8a913b694eacad6cc075e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Thu, 30 Nov 2023 21:43:28 +0100 Subject: [PATCH] Removing BackgroundServiceStarter from AddSingletonHostedService --- .../Extensions/ServiceCollectionExtensions.cs | 8 ++-- .../Utilities/BackgroundServiceStarter.cs | 45 ------------------- CHANGELOG.md | 8 ++++ 3 files changed, 13 insertions(+), 48 deletions(-) delete mode 100644 AMWD.Common.AspNetCore/Utilities/BackgroundServiceStarter.cs diff --git a/AMWD.Common.AspNetCore/Extensions/ServiceCollectionExtensions.cs b/AMWD.Common.AspNetCore/Extensions/ServiceCollectionExtensions.cs index 7d4511e..17b3e28 100644 --- a/AMWD.Common.AspNetCore/Extensions/ServiceCollectionExtensions.cs +++ b/AMWD.Common.AspNetCore/Extensions/ServiceCollectionExtensions.cs @@ -18,7 +18,8 @@ namespace Microsoft.Extensions.DependencyInjection where TService : class, IHostedService { services.AddSingleton(); - services.AddSingleton>(); + services.AddHostedService(serviceProvider => serviceProvider.GetRequiredService()); + return services; } @@ -30,10 +31,11 @@ namespace Microsoft.Extensions.DependencyInjection /// The to add the service to. /// A reference to this instance after the operation has completed. public static IServiceCollection AddSingletonHostedService(this IServiceCollection services) - where TService : class, IHostedService where TImplementation : class, TService + where TService : class, IHostedService + where TImplementation : class, TService { services.AddSingleton(); - services.AddSingleton>(); + services.AddHostedService(serviceProvider => serviceProvider.GetRequiredService()); return services; } diff --git a/AMWD.Common.AspNetCore/Utilities/BackgroundServiceStarter.cs b/AMWD.Common.AspNetCore/Utilities/BackgroundServiceStarter.cs deleted file mode 100644 index c4b7345..0000000 --- a/AMWD.Common.AspNetCore/Utilities/BackgroundServiceStarter.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Threading; -using System.Threading.Tasks; - -namespace Microsoft.Extensions.Hosting -{ - /// - /// Wrapper class to start a background service. - /// - /// The service type. - [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] - public class BackgroundServiceStarter : IHostedService - where TService : class, IHostedService - { - private readonly TService service; - - /// - /// Initializes an new instance of the class. - /// - /// The service to work in background. - public BackgroundServiceStarter(TService backgroundService) - { - service = backgroundService; - } - - /// - /// Starts the service. - /// - /// - /// - public Task StartAsync(CancellationToken cancellationToken) - { - return service.StartAsync(cancellationToken); - } - - /// - /// Stops the service. - /// - /// - /// - public Task StopAsync(CancellationToken cancellationToken) - { - return service.StopAsync(cancellationToken); - } - } -} diff --git a/CHANGELOG.md b/CHANGELOG.md index 623ea5a..a610bba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [AMWD.Common.EntityFrameworkCore](https://git.am-wd.de/AM.WD/common/compare/efc/v2.0.1...main) - [AMWD.Common.Test](https://git.am-wd.de/AM.WD/common/compare/test/v2.1.1...main) +### Changed + +- Using `AddHostedService<>()` with "implementation factory" for `AddSingletonHostedService<>()` to resove singleton instance + +### Removed + +- Removed `BackgroundServiceStarter` + ## v2.0.1, asp/v2.1.0, efc/v2.0.1, test/v2.1.1 - 2023-11-23