с моим управлением activex процесс IE не завершается после закрытия окна / страниц

#qt #activex

#qt #activex

Вопрос:

Я создаю библиотеку DLL activex с помощью Qt. Я создаю подкласс QAxFactory для создания экспортируемого объекта класса и использую одноэлементный шаблон.

 //MyFactory is subclass of QAxFactory
//MyClass is the exported class for com container to use
QObject *MyFactory::createObject(const QString amp;key)
{
    return MyClass::getInstance();
}
 

Вот проблема:

После обновления страницы IE несколько раз, а затем закрытия страницы / окна IE, деконструкция экспортированного класса MyClass вызывается немедленно, но MyFactory деконструкция нет. И в диспетчере задач Windows процесс iexplorer не завершается. Примерно через 30-50 секунд завершается процесс iexplorer и MyFactory вызывается деконструкция.

Я думаю, это потому, что мой код неправильно очистил некоторые ресурсы, но я не смог найти какой ресурс.

Есть ли способ, которым я могу отладить эту проблему? Заранее спасибо!

обновление 1
Похоже, что обработчик событий не был выпущен должным образом в JS. Ниже приведены функции обработчика событий в js.

 function MyClassObj::eventHandler()
{
    console.log("event fired");
}
 

Как мне правильно освободить обработчик, когда страница обновляется или закрывается?

обновление 2
После нескольких дней борьбы я получил некоторые обновления: если я распространяю этот элемент управления activex как in-process (dll), процесс IE будет ждать около 1 минуты, чтобы завершить работу после закрытия. Но если я использую его как out-process (exe), IE завершит работу сразу после закрытия.
Я пробовал с официальными примерами Qt, это то же самое.
Все еще не уверен, нормально это или нет.