I've started converting a console based version of a TCP client to GUI. I'll admit, I'm not great with threading and only know a bit of C#. I've managed to get everything working apart from the point when; The client sends another PC (Server) The client's IP so it can then connect back to send data back over, Normally it would reply with the string I set it to: "REPLY INIT", this shows me that I have received data from the other PC. However, when trying to write this to a rich text box / set labels with the data, nothing works; it says its not null but I can't seem to set any GUI elements using the variables in the thread.
 public void Receive()
    {
        try
        {
            byte[] ReceiPacket = new byte[1000];
            Form1.Reciever.Read(ReceiPacket, 0, ReceiPacket.Length);
            Form1.Reciever.Flush();
            string Command = Encoding.ASCII.GetString(ReceiPacket);
            string[] CommandData = System.Text.RegularExpressions.Regex.Split(Command, ">");
                try
                {
                    string LoggingText = CommandData[1].ToString();
                    WriteToLog(LoggingText, "Green");
                }
                catch
                {
                }
        }
        catch
        {
            WriteToLog("Error Receiving!", "Red");
        }
    }
I've removed some code to clean it up a bit, but that's the thread being used to receive stuff.
(The Layout)
The server would reply with something like the following: string>whatever> I used regex to differentiate between the command (string) and the content (whatever).
 
    