public void ReleaseBuffer(SocketAsyncEventArgs args)
{
// Check for dispose
CheckDisposed();
// Grab the SAEA user token, which should be a BufferDataToken
BufferDataToken Token = args.UserToken as BufferDataToken;
if (Token == null)
throw new Exception("The SocketAsyncEventArgs.UserToken was not a valid instance of BufferDataToken");
// Add the free buffer space back
FreeBufferSpace.Push(Token);
// Try and reset buffer
try { args.SetBuffer(null, 0, 0); }
catch (ObjectDisposedException) { }
}