2010-01-22 7 views
1

приветствия, им новые для программирования.C# Invoke Action Cross Thread Access

В настоящее время мое приложение использует делегаты для обработки/выполнения методов, которые находятся в другом классе/объекте.

, но я получал сообщение о том, что они проживали в separte threads. поэтому после поиска в Интернете я придумал следующее:

this.Invoke(new Action(delegate() { this.ChatRichTextBox.AppendText(EventArgs.commMessage); })); 

Это хорошо сработало, я понятия не имею, что происходит. Я просто вставил код, и он сработал.

сейчас, хотя сейчас мне нужно делать это по-другому, поскольку компилятор говорит, что он не может сделать> <! = Операции в этом действии.

, пожалуйста, сообщите, как лучше всего реализовать это?

большое спасибо.

+0

Я не понимаю, что вы имеете в виду, когда вы говорите "это не может сделать><= операция!". можете ли вы опубликовать этот код? – hackerhasid

+0

Я бы сейчас не удалился от своего компьютера. до тех пор. Благодарю. – iTEgg

ответ

4

Доступ к элементам управления Windows Forms не является неотъемлемой нитью. Если у вас есть два или более потока, управляющих состоянием управления, возможно, , чтобы заставить управление в непоследовательное состояние. Возможны и другие ошибки, связанные с потоком, такие как как условия гонки и взаимоблокировки. Это важно для обеспечения того, чтобы доступ к вашим элементам управления выполнялся в потоковом режиме .

Это может быть опасно для вызова управления из нити другой, чем тот, который создал контроль без использования метода Invoke .

+0

Связано ли это с>

+0

В нем объясняются операции с поперечными потоками (которые OP не понимает) –