Build the host only once (WS-BR-01): if the static ServiceHost is null, call Create(args) (see Create and configure the host) and assign its result to ServiceHost; otherwise reuse the existing host.
Branch: if ServiceHost was set earlier (for example by a test, or an earlier Create call), Create -- and therefore the startup delay and the Configure hooks -- is skipped entirely.
Run the host with ServiceHost.Run() (a framework-standard Microsoft.Extensions.Hosting extension).
This starts every registered IHostedService, so each ServiceWorker<T> begins its loop (see Execute the worker loop), and blocks until shutdown is triggered by the SCM stop, Ctrl+C, or StopAsync from Handle a task error.
On failure: exceptions thrown from StartAsync propagate to Main.