从通过TCP获取数据的线程写入RichTextBox

本文关键字:线程 RichTextBox 数据 TCP 获取 | 更新日期: 2023-09-27 18:03:08

我已经开始将基于控制台的TCP客户机版本转换为GUI。我承认,我不擅长线程,只懂一点c#。我已经设法让一切工作,除了点;客户端发送另一台PC(服务器)客户端的IP,这样它就可以连接回发送数据,通常它会用我设置的字符串来回复:"reply INIT",这表明我已经从另一台PC接收到数据。然而,当试图将此写入富文本框/设置标签的数据,没有工作;它说它不是空的,但我似乎不能设置任何GUI元素使用线程中的变量。

 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");
        }

    }

我已经删除了一些代码来清理它,但那是用来接收东西的线程。

(布局)

服务器将回复如下内容:string>whatever>我使用regex来区分命令(字符串)和内容(无论什么)。

从通过TCP获取数据的线程写入RichTextBox

SORTED!

我只是把我想要运行的东西放在里面,它就工作了!

                this.Invoke((MethodInvoker)delegate
            {
                WriteToLog("Testing", "Red");
            });