Потоки Thread: Необработанное исключение типа "System.NullReferenceException" - C#

Узнай цену своей работы

Формулировка задачи:

Такова проблема
Листинг программы
  1. thrListener = new Thread(KeepListening);
  2. thrListener.Start();
  3. ...
  4. public void KeepListening()
  5. {
  6. while (ServRunning == true)
  7. {
  8. tcpClient = tlsClient.AcceptTcpClient();
  9. // Create a new instance of Connection
  10. Connection newConnection = new Connection(tcpClient);
  11. }
  12. }
Когда пытаюсь остановить поток
Листинг программы
  1. public void StopListening(int t)
  2. {
  3. ServRunning = false;
  4. thrListener.Abort();
  5. }
то выползает ошибка
Необработанное исключение типа "System.NullReferenceException" Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
Как с этим бороться?

Решение задачи: «Потоки Thread: Необработанное исключение типа "System.NullReferenceException"»

textual
Листинг программы
  1. while (ServRunning == true)
  2.   { // сам цикл, всё, как положено
  3.    try // и тут само изменение
  4.   {
  5.    tcpClient = tlsClient.AcceptTcpClient(); // эта гадость, которая мешает
  6.    Connection newConnection = new Connection(tcpClient); // само принятие клиента (как и раньше)
  7.   } // но если будет ошибка
  8.    catch (SocketException e) // самого SocketException, так сказать
  9.   {
  10.     if ((e.SocketErrorCode == SocketError.Interrupted)) // спрашиваем, идёт ли ошибка на почве ошибки сокетов (то-есть блокирующего метода)
  11.   {
  12.       tcpClient = null; // тогда приравниваем его к null
  13.       thrListener.Abort(); // и закрываем этот поток
  14.   }
  15.  }
  16.  }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы