Элемент управления ActiveX нуждается в синхронизации потоков? - PullRequest
3 голосов
/ 19 января 2011

В настоящее время я разрабатываю простой элемент управления ActiveX.Этот элемент управления предоставляет небольшой набор свойств и методов.Сейчас неизвестно, будут ли методы ActiveX вызываться из разных потоков.Чтобы быть готовым к этому сценарию, я решил реализовать синхронизацию потоков внутри каждого метода, представленного элементом управления.Нужно ли реализовывать эту синхронизацию или она уже реализована в Microsoft ActiveX Framework?Я делаю что-то избыточное?

1 Ответ

1 голос
/ 23 января 2011

Как это работает, зависит от того, какую модель потоков использует ваш элемент управления, но при условии, что ваш элемент управления ActiveX использует модель потоков «APARTMENT» (что почти всегда должно быть), вы можете предполагать, что все методы элемента управления ActiveX будут вызываться с одинаковыми параметрами. нить. Если другие потоки обращаются к ним, ActiveX автоматически маршаллизирует вызов к правильному потоку, чтобы вы получили его в этом потоке.

К тому же, вы никогда не должны выполнять вызовы объекта ActiveX или COM-интерфейса, который вы используете из потока, отличного от того, в котором вы его получили. Если вам нужно совершать вызовы из нескольких потоков, есть способы сделать это, но это выходит за рамки этого вопроса.

Резюме: вам не нужно беспокоиться о том, что ваши методы вызываются из разных потоков, поэтому вам не нужно беспокоиться о синхронизации.

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