Table of Contents

Class ConsoleHostedService<TStartup>

Namespace
Codebelt.Bootstrapper.Console
Assembly
Codebelt.Bootstrapper.Console.dll

Provides a console application that is managed by its host.

public class ConsoleHostedService<TStartup> : IHostedService where TStartup : ConsoleStartup

Type Parameters

TStartup

The type containing the startup methods for the application.

Inheritance
ConsoleHostedService<TStartup>
Implements

Examples

The following example shows how ConsoleHostedService<TStartup> is registered by UseConsoleStartup<TStartup> on the conventional IHostBuilder, and how the hosted service itself can be resolved from the host's service collection. When the host starts, the service logs a RunAsync started. message through BootstrapperLogMessages, runs the TStartup.RunAsync task, and then calls IHostApplicationLifetime.StopApplication to begin a graceful shutdown.

using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Codebelt.Bootstrapper.Console;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace ConsoleHostedServiceDemo;

public class MyStartup : ConsoleStartup
{
    public MyStartup(IConfiguration configuration, IHostEnvironment environment) : base(configuration, environment)
    {
    }

    public override void ConfigureServices(IServiceCollection services)
    {
    }

    public override Task RunAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }
}

public static class Program
{
    public static void Main()
    {
        var host = Host.CreateDefaultBuilder()
            .UseConsoleStartup<MyStartup>()
            .Build();

        var hosted = host.Services.GetServices<IHostedService>();
        var consoleHosted = hosted.OfType<ConsoleHostedService<MyStartup>>().Single();
    }
}

Constructors

ConsoleHostedService(IStartupFactory<TStartup>, IHostApplicationLifetime, IServiceProvider, IHostLifetimeEvents)

Initializes a new instance of the ConsoleHostedService<TStartup> class.

public ConsoleHostedService(IStartupFactory<TStartup> factory, IHostApplicationLifetime applicationLifetime, IServiceProvider provider, IHostLifetimeEvents events)

Parameters

factory IStartupFactory<TStartup>

The dependency injected IStartupFactory<TStartup>.

applicationLifetime IHostApplicationLifetime

The dependency injected IHostApplicationLifetime.

provider IServiceProvider

The dependency injected IServiceProvider.

events IHostLifetimeEvents

The dependency injected IHostLifetimeEvents.

Methods

StartAsync(CancellationToken)

Triggered when the application host is ready to start the service.

public Task StartAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Indicates that the start process has been aborted.

Returns

Task

A Task that represents the asynchronous operation.

StopAsync(CancellationToken)

Triggered when the application host is performing a graceful shutdown.

public Task StopAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Indicates that the shutdown process should no longer be graceful.

Returns

Task

A Task that represents the asynchronous operation.

See Also