C # SocketException não é pego
Eu tenho uma localização muito estranha acontecendo no meu código. Estou desenvolvendo um aplicativo cliente-servidor c # chat. Quando fecho o servidor, quero que o cliente seja fechado automaticamente. O cliente está lendo do objeto TcpClient usando um StremReader. O cliente está em um loop while, onde lê uma linha (StreamReader.ReadLine ()) e, em seguida, realiza algumas operações com a linha que lê. Quando o servidor fica fechado, também fecho a conexão tcp do lado do servidor. Então, estou esperando que o cliente veja uma SocketException causada pela linha de leitura, pegue-a e saia. Mas a exceção não é pega! Aqui está o código do loop do cliente:
while (true)
{
try
{
ricev = read.ReadLine();
}
catch(SocketException exc)
{
//It never gets in here
}
chat.Invoke(showMessage, ricev);
}
Quando fecho o servidor, o visual studio informa que uma exceção de primeira chance "System.Net.Sockets.SocketException" foi gerada no System.dll, mas não consigo detectá-la. Por que isso acontece? Eu também tentei pegar qualquer exceção genérica com um
catch
{
}
block, mas isso também não funcion
Qualquer ajuda será apreciada
EDIT: depois de tentar mais algumas vezes, eu realmente descobri que o SocketException não é gerado. Isso é tão estranho, como eu disse em um comentário, na situação oposta, quando o cliente é fechado antes do servidor, a exceção é levantada e eu não consigo. Eu realmente não sei o que está acontecendo ....