Как использовать HttpListener для нескольких областей применения? - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь найти лучший способ использования HttpListener для нескольких методов в тестовой среде, которая действует как средство запуска консольного приложения.

Мой текущий поток выполнения выглядит так: SetupEnv -> Run -> CleanEnv

(псевдокод)

class Test {

    // mock server is just a wrapper class around HttpListener
    MockServer mockServer; 

    // This can set global vars in my test app
    SetupEnvironment()


    Run()
    {
        // Then I have smaller scope methods that called multiple times with
        // each application launch
        foreach (var app in apps){
            SetupApplication()
            StartApplication()
        }
    }

    // clean up method that is called at end of all app executions
    CleanEnvironment()
}

Для некоторого контекста мне нужно прослушать некоторые HTTP-запросы в и SetupApplication и StartApplication. Однако SetupApplication завершит выполнение до вызова StartApplication, поэтому я не пытаюсь прослушивать два метода одновременно. В настоящее время я инициализирую HttpListener в SetupEnvironment и наблюдаю за определенными флагами в моем классе оболочки mockServer:

SetupEnvironment()
{
    mockServer = new MockServer();
    mockServer.Start(); // same as HttpListener.Start()
}

SetupApplication()
{
    while(!mockServer.validationDone)
    {
        // listen at prefixes and do validation stuff
    }
}

StartApplication()
{
    while(!mockServer.appDone)
    {
        // listen at prefixes and do start app stuff
    }
}

CleanEnvironment()
{
    mockServer.Close(); // same as HttpListener.Close()
}

Это лучший способ использовать HttpListener в разных методах? Или я должен заключать каждое использование в оператор using? Или я должен начать слушать после инициализации в SetupEnvironment?

По сути, мой вопрос сводится к следующему: каков наилучший способ управления временем жизни HttpListener несколькими, не одновременно выполняющимися методами?

...