Should I still call Dispose()
on my socket after closing it?
For example:
mySocket.Shutdown(SocketShutdown.Both); mySocket.Close(); mySocket.Dispose(); // Redundant?
I was wondering because the MSDN documentation says the following:
Closes the Socket connection and releases all associated resources.
Calling Close internally calls Dispose so you don't need to call both. From .NET Reflector:
public void Close() { if (s_LoggingEnabled) { Logging.Enter(Logging.Sockets, this, "Close", (string) null); } ((IDisposable)this).Dispose(); if (s_LoggingEnabled) { Logging.Exit(Logging.Sockets, this, "Close", (string) null); } }
If possible you should use the using
pattern so that you always call Dispose regardless of any exceptions that might occur.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With