Фоновый рабочий в пользовательском контроле Winform в элементе управления ActiveX, приводящий к сбою ActiveX - PullRequest
0 голосов
/ 05 июля 2011

Я написал ActiveX-Control с привязываемым свойством. ActiveX состоит из единственного диалогового окна, в котором отображается пользовательский элемент управления WinForms (через CWinFormsControl <..>). Когда свойство ActiveX изменяется, вызывается функция в Usercontrol, которая затем должна выполнить несколько вызовов базы данных и отобразить результаты.

Пока все работает.

Теперь, когда я хочу переместить запросы к базе данных в BackgroundWorker, но каждый раз, когда я вызываю свои функции базы данных в фоновом режиме, происходит сбой ActiveX-Control. UserControl самостоятельно (в обычном WinForms-приложении) работает нормально.

Есть идеи, как я могу найти, что здесь не так? Есть ли общие подводные камни с потоками и элементами управления ActiveX, о которых я не знаю?

1 Ответ

3 голосов
/ 05 июля 2011

Элемент управления ActiveX связан с потоком, только поток (обычно это поток главного окна), который создает элемент управления ActiveX, может вызывать установку свойства / вызов функции элемента управления. В противном случае элемент управления потерпит крах. Если фоновый рабочий поток хочет уведомить или перезвонить элементу управления, лучший способ - это опубликовать сообщение Windows для контроля и позволить потоку создания элемента управления отреагировать на сообщение и сделать то, что вы когда-либо захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...