2015-07-16 1 views
0

Я начал конвертировать консольную версию TCP-клиента в GUI. Я признаю, что я не очень хорошо разбираюсь в потоках и знаю только немного C#. Мне удалось разобрать все, что было раньше; Клиент отправляет другой ПК (сервер) IP-адрес клиента, чтобы затем он мог вернуться обратно, чтобы отправить данные обратно. Обычно он ответил бы на строку, на которую я ее установил: «REPLY INIT», это показывает мне, что я получил данные из другой ПК. Однако при попытке записать это в богатое текстовое поле/установить метки с данными, ничего не работает; он говорит, что это не null, но я не могу установить какие-либо элементы GUI, используя переменные в потоке.C# WinForms Запись в RichTextBox из потока, который получает данные по TCP

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


    } 

Я удалил некоторый код, чтобы немного почистить его, но это поток, используемый для получения материала.

(Макет)

Сервер ответит что-то вроде следующего: строка> любой> я использовал регулярное выражение для различения между командной строки() и содержание (что угодно).

ответ

0

SORTED!

Я просто разместил то, что я хотел запустить внутри этого, и он работает!

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