Instead of a hosted service, I would recommend the following;
using (var host = CreateHostBuilder(args).Build())
{
await host.StartAsync();
var lifetime = host.Services.GetRequiredService<IHostApplicationLifetime>();
// do work here / get your work service ...
lifetime.StopApplication();
await host.WaitForShutdownAsync();
}