[Solved]QT 5.4.1 QTimer using up all handles for Window Manager Objects
-
I am using a
QTimer
to trigger a recurring call to a function, however it eventually crashed with the following errorsQEventDispatcherWin32::registerTimer: Failed to create a timer (The current process has used all of its system allowance of handles for Window Manager objects.) struct HWND__ *__cdecl qt_create_internal_window(const class QEventDispatcherWin32 *): CreateWindow() for QEventDispatcherWin32 internal window failed (The current process has used all of its system allowance of handles for Window Manager objects.) Qt: INTERNAL ERROR: failed to install GetMessage hook: 1158, The current process has used all of its system allowance of handles for Window Manager objects.
And as stated in this link, timer objects take up these handles. Is there a way to stop this? My program needs to be running all the time without being restarted and without user input, and increasing the system allowance (as some people suggest) seems like it would just delay the crash rather than prevent it.
Timer code
QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(mFunc())); timer->start(15000);
The timer is not recreated anywhere else, or called multiple times.
-
Hi and welcome to devnet,
Despite the message, your QTimer is probably innocent, how many widgets/windows are you creating with your application ?
-
Ok, then what does happen in mFunc ?
-
sure, here it is
void MainWindow::mFunc() { mTime // send tim url thing QNetworkAccessManager *manager = new QNetworkAccessManager(this); if(ui->s1_AutoCycle->isChecked()) { QString url = makeURL(1,1); screen1->setUrl(url); ui->s1_showing->setText("Screen 1 : " + url); } else { s1_max = 24; QNetworkReply *reply21 = manager->get(QNetworkRequest(QUrl("myUrl.php?param=x"))); connect(reply21, SIGNAL(finished()), this, SLOT(set_s1())); } if(ui->s2_AutoCycle->isChecked()) { QString url = makeURL(2,1); screen2->setUrl(url); ui->s2_showing->setText("Screen 2 : " + url); } else { s2_max = 24; QNetworkReply *reply22 = manager->get(QNetworkRequest(QUrl("myUrl.php?param=x"))); connect(reply22, SIGNAL(finished()), this, SLOT(set_s2())); } mTimer->start(15000); }