c#:从多个线程更新文本框中的控制台

本文关键字:文本 控制台 更新 线程 | 更新日期: 2023-09-27 18:06:45

在我的应用程序中,我试图将控制台的输出显示为win forms文本框。这是工作只要我在gui线程。但是当我从另一个线程写入控制台时,我得到一个InvalidOperationException。这是我使用的代码:

在形式:

public partial class Form1 : Form
    {
        Crawler crawler = new Crawler();
        Log log = null;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            log = new Log(tbLogOutput);    
            Console.SetOut(log);
        }
    }
}

In the text:

class Log : TextWriter
    {
        TextBox _output = null;
        public Log(TextBox output)
        {
            _output = output;
        }
        public override void Write(char value)
        {
            base.Write(value);
            _output.AppendText(value.ToString()); // When character data is written, append it to the text box.
        }
        public override Encoding Encoding
        {
            get { return System.Text.Encoding.UTF8; }
        }
    }

c#:从多个线程更新文本框中的控制台

可能值得在Google上输入"Update UI from thread c#"

如何从c#中的另一个线程更新GUI ?