Remove socket's supply with c# code

Hi all.
I’m wondering if this issue was solved somehow?
We have a similar problem with our commercial project based on G120E + T43 but with the transmission on Ethernet port. The project is RFID reader that reads Mifare card and sends to server IC number waiting for access granted/denied decision from the server (and some other details to show to user) We use the T43 display as HMI on which we display few screens with info for the user.
We observe that sending data by TCP socket takes several seconds before socket.send() command is executed.

App doesn’t stack on command .send(), it goes further, (all other tread work without dealay) but we observe on Wireshark running on the server side that nothing happens for second and then frames start reaching the server.

We also observing that pinging G120E results in serious delay and dropping packets

We also have same app but with no LCD methods and it works smoothly.

Can anybody help in tunning G120E to put more effort on Eth transmission?

This is how we send data:

private void Sender()
        {
            Logger.Instance.Write("Starting Sender() thread.",false);

            while (isRunning)
            {
                try
                {
                    sendEvent.Reset();

                    while (messagesToSend.Count > 0)
                    {
                        Message message = null;

                        lock (messagesToSend)
                        {
                            message = messagesToSend.Dequeue() as Message;
                        }

                        if (message != null)
                            Send(message);
                    }

                    sendEvent.WaitOne();
                }
                catch (Exception exception)
                {
                    
                    Logger.Instance.Write(exception.ToString(), false);
                }
            }
        }//Sender


private void Send(Message message)
    {
            string serializedMessage = JsonSerializer.SerializeObject(message);
            string paddedSerializedData = JsonHelpers.PadSerializedMessage(serializedMessage, Message.BUFFER_SIZE);
            var buffer = Encoding.UTF8.GetBytes(paddedSerializedData);
      
            if (!socket.Poll(5000 * 1000, SelectMode.SelectWrite))
            {
                Debug.Print("Could not send data to the client.");
            }
                              
            int length = socket.Send(buffer, 0, buffer.Length, SocketFlags.None); 
            
            Logger.Instance.Write("Sent      : "+ length.ToString()+" bytes; "+ message.ToString(), false);
                                    
    }// Send