private void ChunkedSend(NetworkSender sender, byte[] buffer, AsyncContinuation continuation) { var tosend = buffer.Length; var pos = 0; AsyncContinuation sendNextChunk = null; sendNextChunk = ex => { if (ex != null) { continuation(ex); return; } if (tosend <= 0) { continuation(null); return; } var chunksize = tosend; if (chunksize > MaxMessageSize) { if (OnOverflow == NetworkTargetOverflowAction.Discard) { continuation(null); return; } if (OnOverflow == NetworkTargetOverflowAction.Error) { continuation(new OverflowException("Attempted to send a message larger than MaxMessageSize (" + MaxMessageSize + "). Actual size was: " + buffer.Length + ". Adjust OnOverflow and MaxMessageSize parameters accordingly.")); return; } chunksize = MaxMessageSize; } var pos0 = pos; tosend -= chunksize; pos += chunksize; sender.Send(buffer, pos0, chunksize, sendNextChunk); }; sendNextChunk(null); }