@rgamretsky
SharePoint Develorep(а хочется в ASP.NET MVC dev)

Как реализовать асинхронное прослушивание HttpListener C#?

Подскажите как в следующем коде реализовать прослушивание http запросов не тормозя работу основной программы?
HttpListener listener = new HttpListener();
        StringBuilder log = new StringBuilder();
        string path;
        private async void button1_Click(object sender, EventArgs e)
        {
            listener.Prefixes.Add("http://localhost:8080/");

            listener.Start();
            //listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
            if (listener.IsListening)
            {
                button1.Enabled = false;
                log.Append("Start server...");
                richTextBox1.Text= log.ToString();
            }

            while (true)
                try
                {
                    HttpListenerContext request = listener.GetContext();
                    ThreadPool.QueueUserWorkItem(ProcessRequest, request);
                }
                catch (HttpListenerException) { break; }
                catch (InvalidOperationException) { break; }
        }
  • Вопрос задан
  • 3533 просмотра
Решения вопроса 1
@LEKAPb
Возможно в вашем случае можно сделать так:
// Тут запускаем прослушку 
Task.Factrory.StartNew(()=>{ 
 // Тут уже обрабатываем запросы
               while (true)
                try
                {
                    HttpListenerContext request = listener.GetContext();
                    ThreadPool.QueueUserWorkItem(ProcessRequest, request);
                }
                catch (HttpListenerException) { break; }
                catch (InvalidOperationException) { break; } });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы