46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Microsoft.Extensions.Hosting
|
|
{
|
|
/// <summary>
|
|
/// Wrapper class to start a background service.
|
|
/// </summary>
|
|
/// <typeparam name="TService">The service type.</typeparam>
|
|
[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
|
|
public class BackgroundServiceStarter<TService> : IHostedService
|
|
where TService : class, IHostedService
|
|
{
|
|
private readonly TService service;
|
|
|
|
/// <summary>
|
|
/// Initializes an new instance of the <see cref="BackgroundServiceStarter{TService}"/> class.
|
|
/// </summary>
|
|
/// <param name="backgroundService">The service to work in background.</param>
|
|
public BackgroundServiceStarter(TService backgroundService)
|
|
{
|
|
service = backgroundService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Starts the service.
|
|
/// </summary>
|
|
/// <param name="cancellationToken"></param>
|
|
/// <returns></returns>
|
|
public Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
return service.StartAsync(cancellationToken);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Stops the service.
|
|
/// </summary>
|
|
/// <param name="cancellationToken"></param>
|
|
/// <returns></returns>
|
|
public Task StopAsync(CancellationToken cancellationToken)
|
|
{
|
|
return service.StopAsync(cancellationToken);
|
|
}
|
|
}
|
|
}
|