Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Should I manually dispose the socket after closing it?

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.

like image 406
Kevin Avatar asked Aug 30 '10 14:08

Kevin


1 Answers

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.

like image 187
Mark Byers Avatar answered Oct 02 '22 23:10

Mark Byers