У меня действительно странная ситуация в моем коде.Я разрабатываю клиент-серверное приложение ac # chat.Когда я закрываю сервер, я хочу, чтобы клиент автоматически закрывался.Клиент читает из объекта TcpClient, используя StremReader.Клиент находится в цикле while, где он читает строку (StreamReader.ReadLine ()) и затем выполняет некоторые операции со строкой, которую он читает.Когда сервер закрывается, я также закрываю серверную часть соединения TCP.Итак, я ожидаю, что клиент увидит исключение SocketException, вызванное readline, перехватит его и завершится.Но исключение не попадает!Вот код цикла клиента:
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 вообще не вызывается.Это так странно, как я сказал в комментарии, в противоположной ситуации, когда клиент закрывается перед сервером, возникает исключение, и я могу это сделать.Я действительно не знаю, что происходит ....