Мне нужно было создать в своей ActiveX DLL цикл обработки сообщений.
При создании объекта в DLL создается поток.
Вроде все сделал правильно: и маршалинг, и синхронизацию CreateInst. ит.д.
И вроде даже по ACtiveX интерфейсу все работает.
Но возник один глюк:
ActiveX содержит Rich control, и возникает 0xC0000005 Access Violation в его оконной процедуре. Причем под 2000 еще как то живет, а под 98 валится.
Я слышал что MS не рекомендует использовать in-proc Apartment. Это связано с доступом к одним ресурсам из разных потоков. В принципе это похоже на правду: обработка оконой процедуры формируется в отдельном потоке, может при этом возникает Access Violation.
ActiveX сделан с использованием ATL-WTL, и в нем вроде все правильно.
Может кто знает подробности — в чем тут дело?