estoy leyendo the documentation on TcpClient.Close() y dado cuenta de esto:¿Es necesario cerrar NetworkStream y TcpClient, o simplemente TcpClient?
llamada a este método con el tiempo como resultado el cierre del zócalo asociado y también cerrará la NetworkStream asociado que se utiliza para enviar y recibir datos si se ha creado.
Así, corrígeme si me equivoco, pero esto dice que si uno llama Close()
en el que el TcpClient
NetworkStream
también estará cerrada.
Entonces, ¿por qué al final del ejemplo de código se llaman ambos Close()
?
networkStream.Close();
tcpClient.Close();
¿Sería igual de bueno llamar solo al tcpClient.Close();
?
Sí, no es necesario. Tampoco es necesario usar tcpClient.Close() en ese ejemplo, el programa termina inmediatamente después de eso :) –
Antes de .NET 3.0, tanto el TcpClient como el NetworkStream subyacente tenían que cerrarse explícitamente. A partir de .NET 3.0, el NetworkStream subyacente se cierra al cerrar el TcpClient. Close() y Dispose() en TcpClient son equivalentes, con Close() añadiendo algunos registros internos. –