Доступ к string.IsNullOrWhiteSpace (textBox.Text) с использованием другого потока и Invoke - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь внедрить систему для постоянного тестирования, если результаты в richTextBox равны нулю, используя другой поток.

Вот полный контекст, я получаю данные от весов, которые будут отображаться на richTextBox. Если это стабильное чтение, я добавлю результаты в базу данных массива.

Раньше я работал синхронно. Но я должен запустить программу дважды одновременно. Это работало нормально на синхронной основе.

        void GetStableReading(SerialPort VarPort)
        {
            richSerialOut.Text = VarPort.ReadExisting();
            richSerialOut.Update();
            while (string.IsNullOrWhiteSpace(richSerialOut.Text))
            {
                richSerialOut.Text = VarPort.ReadExisting();
                richSerialOut.Update();
                if (richSerialOut.Text.Contains("ES") || richSerialOut.Lines.Count() > 3)
                {
                    richSerialOut.Text = VarPort.ReadExisting();
                    richSerialOut.Update();
                }
            }
            database.Add(richSerialOut.Text);
            Thread.Sleep(1000);
        }

Однако я не могу получить результат bool, используя метод Invoke, поэтому я попытался поместить результат в строку и проверить, подходит ли он, но я не смог этого сделать.

  void GetStableReading(SerialPort VarPort)
            {
                ScalePort.DiscardOutBuffer();
                object[] StabilityCommand = { "", VarPort.ReadExisting() };
                this.Invoke(d, StabilityCommand[0]);
                while (Scale_weight == "SI\r\n" || Scale_weight == "")
                {
                    //richSerialOut.Text = VarPort.ReadExisting();
                    ScalePort.DiscardOutBuffer();
                    Scale_weight = "";
                    Thread.Sleep(1000);
                    ScalePort.Write("S" + "\n");
                    this.Invoke(d, StabilityCommand[1]);
                }

                    database.Add(Scale_weight);
                    Thread.Sleep(1000);


            }



void SetText(string message)
            {
                richOut.Text = message;
                Scale_weight = message;
                    richOut.Update();
            }

У кого-нибудь есть более интуитивный способ.

Мне нужно отправить строку "S \ n" через последовательный порт. Требуемые строковые результаты будут в "S X.XXX Kg \ n", где S определяет стабильное чтение, а X.XXX - вес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...