В статье, на которую вы ссылаетесь, содержится вся информация, необходимая для правильного размещения формы в неуправляемом приложении. Вы должны искать источник AV в другом месте. Начните с использования отладчика. Вы можете принудительно остановить исключение с помощью диалогового окна «Отладка + исключения», флажок «Брошено».
Требование STA почти всегда достаточно для правильной работы элемента управления ActiveX в многопоточном приложении. Это обеспечивает гарантию того, что все вызовы методов выполняются в том же потоке, в котором был создан класс. Другими словами, любые переменные экземпляра внутри реализации coclass гарантированно будут использоваться потокобезопасным способом.
Одна гарантия, которую вы здесь не имеете, заключается в том, правильно ли обрабатывает элемент управления глобальное состояние. Переменные экземпляра безопасны, глобальные переменные - нет, когда вы используете элемент управления в разных потоках. Возможный обходной путь для этого - использовать только один поток вместо одного потока STA для каждого экземпляра формы. Это немного сложно, вам понадобится невидимая вспомогательная форма, которая управляет потоком. Поддержание его и создание новых экземпляров форм с помощью метода Invoke ().
Прежде чем идти туда, выясните, что в первую очередь падает.