Sto leggendo the documentation on TcpClient.Close() e notato questo:È necessario chiudere sia NetworkStream che TcpClient o solo TcpClient?
chiamata a questo metodo finirà per determinare la chiusura del socket associato e sarà anche chiudere il NetworkStream associato che viene utilizzato per inviare e ricevere dati se uno è stato creato.
Quindi, mi corregga se sbaglio, ma questo dice che se si chiama Close()
sul TcpClient
che il NetworkStream
sarà anche chiuso.
Allora, perché alla fine dell'esempio di codice sono chiamati sia Close()
?
networkStream.Close();
tcpClient.Close();
Sarebbe altrettanto bello chiamare solo tcpClient.Close();
?
Sì, non è necessario. Anche l'utilizzo di tcpClient.Close() in quell'esempio non è necessario, il programma termina subito dopo :) –
Prima di .NET 3.0, sia il TcpClient che il NetworkStream sottostante dovevano essere chiusi esplicitamente. A partire da .NET 3.0, il NetworkStream sottostante viene chiuso alla chiusura di TcpClient. Close() e Dispose() su TcpClient sono equivalenti, con Close() che aggiunge alcune registrazioni interne. –