Added IAsyncInitialization to host startup

This commit is contained in:
TheXamlGuy
2024-09-29 22:15:31 +01:00
parent 9f00bac1dd
commit 6c7a6e9cf5
4 changed files with 31 additions and 12 deletions
+10 -5
View File
@@ -2,19 +2,24 @@
namespace Toolkit.Foundation;
public class AppService(IEnumerable<IInitialization> initializers,
public class AppService(IEnumerable<IInitialization> initializations,
IEnumerable<IAsyncInitialization> asyncInitializations,
IPublisher publisher) :
IHostedService
{
public Task StartAsync(CancellationToken cancellationToken)
public async Task StartAsync(CancellationToken cancellationToken)
{
foreach (IInitialization initializer in initializers)
foreach (IInitialization initialization in initializations)
{
initializer.Initialize();
initialization.Initialize();
}
foreach (IAsyncInitialization initialization in asyncInitializations)
{
await initialization.Initialize();
}
publisher.Publish<StartedEventArgs>();
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
+9 -3
View File
@@ -4,7 +4,8 @@ using Microsoft.Extensions.Hosting;
namespace Toolkit.Foundation;
public class ComponentHost(IServiceProvider services,
IEnumerable<IInitialization> initializers,
IEnumerable<IInitialization> initializations,
IEnumerable<IAsyncInitialization> asyncInitializations,
IEnumerable<IHostedService> hostedServices) :
IComponentHost
{
@@ -22,9 +23,14 @@ public class ComponentHost(IServiceProvider services,
public async Task StartAsync(CancellationToken cancellationToken = default)
{
foreach (IInitialization initializer in initializers)
foreach (IInitialization initialization in initializations)
{
initializer.Initialize();
initialization.Initialize();
}
foreach (IAsyncInitialization initialization in asyncInitializations)
{
await initialization.Initialize();
}
foreach (IHostedService service in hostedServices)
+1 -1
View File
@@ -64,7 +64,7 @@ public class DefaultHostBuilder :
services.AddHandler<NavigateHandler>();
services.AddHandler<NavigateBackHandler>();
services.AddInitializer<ComponentInitializer>();
services.AddInitialization<ComponentInitializer>();
services.AddHostedService<AppService>();
});
}
@@ -90,11 +90,19 @@ public static class IServiceCollectionExtensions
return services;
}
public static IServiceCollection AddInitializer<TInitializer>(this IServiceCollection services)
where TInitializer : class,
public static IServiceCollection AddInitialization<TInitialization>(this IServiceCollection services)
where TInitialization : class,
IInitialization
{
services.AddTransient<IInitialization, TInitializer>();
services.AddTransient<IInitialization, TInitialization>();
return services;
}
public static IServiceCollection AddAsyncInitialization<TInitialization>(this IServiceCollection services)
where TInitialization : class,
IAsyncInitialization
{
services.AddTransient<IAsyncInitialization, TInitialization>();
return services;
}