Поток - вывод richTextBox1 - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Хочу вывести информацию в richTextBox1 из потока. Раньше пользовался таким:
richTextBox1.Invoke((MethodInvoker)delegate
{
    richTextBox1.AppendText("lala");
});
Захотел оформить создание потока в "отдельном классе". Допустим вот такой кодец:
class MyThread : Form1
{   
    public MyThread()
    {
        Thread Thrd = new Thread(this.Run);
        Thrd.Start(); 
    }
           
    void Run()
    {
        // Так не хочет
        richTextBox1.Invoke((MethodInvoker)delegate
        {
        richTextBox1.AppendText("lala");
        });                
    }
}
 
private void button1_Click(object sender, EventArgs e)
{
    MyThread mt = new MyThread();
}
Выдаёт ошибку: "Additional information: Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна." Покопался в интернете - сам не могу понять, что делать. Помогите пожалуйста.

Решение задачи: «Поток - вывод richTextBox1»

textual
Листинг программы
class MyThread
{   
    RichTextBox _rtb;
 
    public MyThread(RichTextBox rtb)
    {
        _rtb = rtb;
        Thread Thrd = new Thread(this.Run);
        Thrd.Start(); 
    }
           
    void Run()
    {
        rtb.Invoke((MethodInvoker)delegate
        {
            rtb.AppendText("lala");
        });                
 
       // Новый код
       Form1 f1 = new Form1();
       f1.new_function(thread_number);
    }
}
 
private void button1_Click(object sender, EventArgs e)
{
    MyThread mt = new MyThread(richTextBox1);
}
 
public void new_function(thread_number)
{
    // Как тут добивать содержимое к richTextBox1?
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5
Похожие ответы