public void Send(object packet)
{
if (packet == null)
throw new ArgumentNullException("packet");
if (_isSendShutdown)
return;
if (Interlocked.Increment(ref _sendCount) == 1)
{
var oldContext = SynchronizationContext.Current;
SynchronizationContext.SetSynchronizationContext(null);
try
{
StartSend(packet);
}
finally
{
SynchronizationContext.SetSynchronizationContext(oldContext);
}
}
else
{
_sendQueue.Enqueue(packet);
}
}