#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, это то же самое.
Все еще не уверен, нормально это или нет.