Я создаю приложение Windows Form, которое динамически создает элементы управления на основе данных, извлеченных из базы данных.VB/C# .net Динамически добавлять элементы управления с фоновым рабочим
У меня есть код, прекрасно работающий в фоновом режиме, который загружает данные из базы данных и применяет его к переменным, проблема заключается в попытке создать элементы управления с использованием этих данных, я получаю многопоточную ошибку (Дополнительная информация: операция Cross-нить не действует:. «Control flowpanelMenuRules» доступ из потока, отличного от резьбы она была создана)
Я использую событие BackgroundWorker_DoWork и код, который не является следующее:
Me.flowpanelMenuRules.Controls.Add(PanelRule(i))
Код предшествует простой цикл, проходящий через переменную (которая является пулькой d из базы данных) и сбора информации.
У кого-нибудь есть опыт безопасного вызова вышеуказанной строки? Я просто не могу заставить его работать на всех :(
Спасибо за помощь, я могу разместить больше кода, если это необходимо.
См. Https://stackoverflow.com/questions/142003/cross-thread-operation-not-valid-control-accessed-from-a-thread-other-than- the?rq=1 для разъяснений о том, что пошло не так. –
Элементы управления не должны создаваться в фоновом потоке. Они привязаны к потоку, в котором они созданы, и должны использоваться только там. Вы должны вызвать конкретное создание и обновление элементов управления, остальное можно сделать в BGW. –