C # SocketException не обнаруживается

В моем коде происходит действительно странная ситуация. Я разрабатываю клиент-серверное приложение для чата на С #. Когда я закрываю сервер, я хочу, чтобы клиент закрывался автоматически. Клиент читает из объекта TcpClient с помощью StremReader. Клиент находится в цикле while, где он читает строку (StreamReader.ReadLine ()), а затем выполняет некоторые операции с этой строкой. Когда serever закрывается, я также закрываю серверную часть TCP-соединения. Итак, я ожидаю, что клиент увидит SocketException, вызванный строкой чтения, поймает его и выйдет. Но исключение не улавливается! Вот код клиентского цикла:

 while (true)
 {
     try
     {
          ricev = read.ReadLine();
     }
     catch(SocketException exc)
     {
         //It never gets in here
     }
     chat.Invoke(showMessage, ricev);
 }

Когда я закрываю сервер, Visual Studio сообщает мне, что в System.dll возникло первое исключение «System.Net.Sockets.SocketException», но я не могу его уловить. Почему так происходит? Я также пытался поймать любое общее исключение с помощью блока

catch
{
}

, но это тоже не сработало.

Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ: после нескольких попыток я действительно обнаружил, что SocketException не работает. вообще не воспитываюсь. Это так странно, как я сказал в комментарии, в противоположной ситуации, когда клиент закрывается раньше сервера, возникает исключение, и я могу его остановить. Я действительно не знаю, что происходит ....

6
задан l.moretto 12 July 2011 в 15:03
поделиться