0

Проблема, пытаюсь сделать потоковый вывод из терминала. Выдает следующее: введите сюда описание изображения

ServerLog - это RichTextBox. С обычным лейблом это тоже не работает. Посоветуйте решение новичку пожалуйста.

    {
        public Form1()
        {
            InitializeComponent();
        }
    Process ServerM = new Process();
    ProcessStartInfo StartConf = new ProcessStartInfo
    {
        FileName = "cmd.exe",
        Arguments = "/c ipconfig \"",
        UseShellExecute = false,
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        RedirectStandardInput = true,
    };


    public void ServerStart_Click(object sender, EventArgs e)
    {
        ServerM.StartInfo = StartConf;
        ServerM.Start();
        ServerM.BeginOutputReadLine();
        ServerM.OutputDataReceived += (s, a) => {
            ServerLog.AppendText(a.Data + "\n");
        };
    }
} 

Ma4in
  • 3
  • Смотрите https://ru.stackoverflow.com/questions/11861/%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-gui-%D0%B8%D0%B7-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B3%D0%BE-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B0 – Виктор Nov 13 '22 at 11:21

1 Answers1

0

Если ты пытаешься вызвать или изменить свойства контролла из другого потока можно использовать Invoke Пример:

ServerLog.Invoke(new Action(()=>ServerLog.AppendText(a.Data+"\n")));
  • Спасибо огромное, ломал голову несколько часов, помог дилетанту. – Ma4in Nov 13 '22 at 11:31
  • Та всегда пожалуйста, там тебе человек выше в коммент отправлял такую же ссылку на такое же решение )) – Канал OverKilla Nov 13 '22 at 11:36