У меня есть richTextBoxLog
, который является публичным и статичным.
После того, как я это объявил, я запускаю новый поток, который инициализирует новую переменную с именем proba
. richTextBoxLog
должно получить значение от proba
.
Проблема в том, что proba
нужно время для инициализации, и я хочу, чтобы richTextBoxLog
инициализировался, пока proba
инициализируется.
Я хочу написать что-то вроде:
richTextBoxLogFile.richTextBoxLog.Text + = proba;
Но, когда я пишу это в методе, который вызывается ранее упомянутым потоком, я получаю исключение: "Cross-thread operation not valid: Control 'richTextBoxLog' accessed from a thread other than the thread it was created on."
Я пытаюсь использовать это:
context.Post (new SendOrPostCallback (newMethod), (object) proba);
где context - это контекст основного потока, а newMethod инициализирует значение richTextBoxLog. Однако этот вызов находится в методе, который запускается новым потоком в цикле while:
while (-1 != (ch = _reader.Read()))
{
Console.Write((char)ch);
proba += ((char)ch).ToString();
context.Post(new SendOrPostCallback(newMethod), (object)proba);
}
_complete.Set();
}
Теперь у меня проблема в том, что я хочу, чтобы newMethod вызывался каждый раз, когда я вхожу в цикл while. Но происходит следующее: цикл while завершается, и после этого новый метод вводится около тысячи раз.