public void SetBuffer(SocketAsyncEventArgs args)
{
if (_availableBuffers.Count > 0)
{
int index = _availableBuffers.Pop();
byte[] buffer;
lock (_bufferLocker)
{
buffer = _buffers[index];
}
args.SetBuffer(buffer, 0, buffer.Length);
}
else
{
byte[] buffer = new byte[_bufferSize];
lock (_bufferLocker)
{
_buffers.Add(buffer);
}
args.SetBuffer(buffer, 0, buffer.Length);
}
}