Conclua as solicitações atuais ao parar o servidor owin auto-hospedado

Eu tenho o servidor OWIN como parte do aplicativo de console. Você pode ver o método principal aqui:

class Program
{
    public static ManualResetEventSlim StopSwitch = new ManualResetEventSlim();

    static void Main(string[] args)
    {
        Console.CancelKeyPress += (s, a) =>
        {
            a.Cancel = true;
            StopSwitch.Set();
        };

        using (WebApp.Start<Startup>("http://+:8080/"))
        {
            Console.WriteLine("Server is running...");
            Console.WriteLine("Press CTRL+C to stop it.");
            StopSwitch.Wait();
            Console.WriteLine("Server is stopping...");
        }

        Console.ReadKey();
        Console.WriteLine("Server stopped. Press any key to close app...");
    }
}

Quando o processamento da solicitação é um pouco mais longo e, ao mesmo tempo, o usuário pressiona CTRL + C para parar o aplicativo, o processamento da solicitação é interrompido imediatamente e a resposta não é enviada. É possível mudar esse comportamento? Gostaria de recusar todos os novos pedidos, mas aguarde até que os pedidos que estão em processamento no momento sejam concluídos e pare o servidor depois disso.

Minha idéia inicial é criar o middleware OWIN que acompanhará as solicitações que estão sendo processadas no momento e adiará a ação de parada até que tudo esteja pronto. O middleware também causaria um curto-circuito em todos os pedidos durante a fase de parada. Mas essa solução não me parece boa.

questionAnswers(1)

yourAnswerToTheQuestion