private void On_Accept_Completed(object sender, SocketAsyncEventArgs acceptedArg) { if (acceptedArg.SocketError == SocketError.Success) { Console.WriteLine("Client Accepted"); Socket clientSocket = acceptedArg.AcceptSocket; _flowControlEvent.Set(); // Let main thread accept new clients CallBackonNewclient?.Invoke(clientSocket, null); // Call Newclient method by delegate if CallBackonNewclient is not null return; } Console.WriteLine("Couldn't accept the client"); Console.WriteLine("Error type: {0}", acceptedArg.SocketError); _flowControlEvent.Set(); //Control shouldn't reach here }