Я пытаюсь найти лучший способ использования 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
несколькими, не одновременно выполняющимися методами?