У меня есть 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."
Могу ли я написать что-то вроде этого: остановить поток, затем инициализировать richTextBoxLog
, затем снова запустить поток, затем остановить его, и то же самое продолжается, пока инициализация richTextBoxLog
заканчивается.
Редактировать: я пытаюсь использоватьthis:
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 завершается, и после этого новый метод вводится около тысячи раз.