private void OnSendAsyncCompleted(object sender, SocketAsyncEventArgs e) { // no other code should go here. All handling is the same for sync/async completion ProcessSend(e); }