ATL-визард создает модуль (AtlModule) в главном потоке программы. Поэтому, все обращения к объектам нужно вести в главном потоке. Для вызова объекта из другого потока нужно пользоваться очередью сообщений (PostMessage/SetEvent/WaitForSingleObject) или маршалингом объектной ссылки(CoMarshalInterThreadInterfaceInStream). В связи с этим у меня вопросы:
1. Достаточно ли один раз отмаршалить интерфейс в другой поток или же это нужно делать каждый раз при вызове?
2. Можно ли создать AtlModule и все объекты в другом потоке, чтобы вовсе забыть о межпоточных взаимодействиях?