// Для .Net Core пакет: Microsoft.AspNetCore.App
        //private IWebHostBuilder AspNetHandler(string keyAuthString, SemaphoreSlim sem)
        //{
        //    var refCopy = sem;

        //    var hostBuilder = WebHost.CreateDefaultBuilder()
        //        .ConfigureLogging(conf =>
        //        {
        //            conf.ClearProviders();
        //        })
        //        .Configure(app =>
        //        {
        //            // Handle Lets Encrypt Route.
        //            app.UseRouter(r =>
        //            {
        //                r.MapGet(".well-known/acme-challenge/{token}", async (request, response, routeData) =>
        //                {
        //                    string token = routeData.Values["token"] as string;
        //                    Log.Information($"Принят HTTP запрос. Token: {token}.");

        //                    response.ContentType = "plain/text";
        //                    await response.WriteAsync(keyAuthString);

        //                    Log.Information($"Отправлен ключ подтверждения: {keyAuthString}.");

        //                    Interlocked.CompareExchange(ref sem, null, refCopy)?.Release();
        //                });
        //            });
        //        })
        //        .ConfigureServices(conf =>
        //        {
        //            conf.AddRouting();
        //        })
        //        .UseUrls($"http://*:{_listenPort}");

        //    return hostBuilder;
        //}

        public Task <bool> StopAsync(TimeSpan timeSpan)
        {
            _stopRequired = true;
            return(_listener.StopAsync(timeSpan));
        }