Попытка доступа к `richTextBox2`не из того потока - как это исправить?

Рейтинг: 0Ответов: 1Опубликовано: 30.04.2015

Программа: обрабатывает текст (считает слова, и т.д.).

В программе: есть метод, в котором собирается строка:

private void PrintResume()
{
    strText.Append("Первая строка: " + int1 + Environment.NewLine);
    strText.Append("Вторая строка: " + int2 + Environment.NewLine);

    richTextBox2.Text += strText.ToString();
}

И соответственно, richTextBox2, который находится внутри tabPage6.

Работает нормально, за исключением случая, если переключить таб (их несколько, с richTextBox'ами и listview'и). В этом случае программа начинает ругаться, что "попытка доступа к richTextBox2 не из того потока, в котором он был создан". Причем, если переключать на табы с listview, этого не происходит.

В чем тут проблема может быть?

Ответы

▲ 3

Истинную причину проблемы, исключая изложенную в тексте Exception'а, мне назвать сложно.
Я советую попробовать обойти ее, используя следующий код:

if (richTextBox2.InvokeRequired)
    richTextBox2.Invoke(new MethodInvoker(() => { richTextBox2.Text += strText.ToString(); }));
else
    richTextBox2.Text += strText.ToString();

Вместо

richTextBox2.Text += strText.ToString();