C#WinForms从通过TCP

时间:2015-07-16 00:50:06

标签: c# multithreading winforms tcp richtextbox

我已经开始将基于控制台的TCP客户端版本转换为GUI。我承认,我对线程并不是很了解,只知道一点C#。我设法让一切都与时俱进;客户端发送另一台PC(服务器)客户端的IP,然后它可以连接回来发回数据,通常它会回复我设置的字符串:" REPLY INIT",这告诉我,我收到了来自其他PC的数据。但是,当尝试将其写入富文本框/设置带有数据的标签时,没有任何作用;它说它不是null但我似乎无法使用线程中的变量设置任何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> 我使用正则表达式来区分命令(字符串)和内容(无论如何)。

1 个答案:

答案 0 :(得分:0)

排序!

我只是放置了我想要在其中运行的内容并且它有效!

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