У меня есть основной поток GUI с функцией XYZ(), чтобы что-то сделать с графическим интерфейсом. В другом потоке, если я вызываю XYZ() из дескриптора основного графического интерфейса пользователя, он отображает ошибку «Неверная операция поперечного потока: элемент управления Button00» доступен из потока, отличного от потока, на котором он был создан ».Вызов функции из другого потока в C#
Как это решить? Я думаю, мне нужно отправить сообщение в поток GUI для выполнения функции XYZ. Пожалуйста, помогите мне.
Спасибо.
Ankata
В моем коде: функция XYZ выполняет что-то и обрабатывает некоторый элемент управления графическим интерфейсом и помещается в основной класс формы. Я попробовал добавить ваш код справки в другой ад, чтобы вызвать функцию XYZ как mainForm.XYZ(), но это та же ошибка? – Ankata
Таким образом, вам придется разделить обработку с обновлением элементов управления графическим интерфейсом на две отдельные функции. Таким образом, вы использовали бы первую функцию для выполнения дорогостоящей обработки в фоновом работнике, и когда она вернет результат, вы вызовете свою вторую функцию для обновления GUI. Если вы не разделите их, вы не сможете запустить его в другом потоке, потому что, как объясняется в моем ответе, элементы управления графическим интерфейсом могут быть обновлены только в основном потоке. –
Однако это очень сложный код для обработки и обновления графического интерфейса. – Ankata