È sicuro interrompere il timer di Qt nella funzione "timeout" di segnale/slot? Non riesco a trovare alcuna informazione nella documentazione Qt sullo QTimer.Qt QTimer è sicuro fermarlo in questo modo?
Ho creato un timer che invia periodicamente messaggi "keep alive" al server. Voglio che questo timer sia fermato se c'è un qualche tipo di errore durante l'invio del mio messaggio.
private:
QTimer* mpKeepAliveTimer;
timer è inizializzato in questo modo:
mpKeepAliveTimer = new QTimer(/* this */);
QObject::connect(mpKeepAliveTimer, SIGNAL(timeout()), this, SLOT(OnKeepAlive()));
mpKeepAliveTimer->start(KEEP_ALIVE_PERIOD);
Arrestato in questo modo:
if (mpKeepAliveTimer != NULL) // <-- Edited
{
if (mpKeepAliveTimer->isActive() == true)
mpKeepAliveTimer->stop();
delete mpKeepAliveTimer;
mpKeepAliveTimer = NULL;
}
funzione Timeout è simile al seguente:
void Classname::OnKeepAlive()
{
if (isErrorFound == true)
mpKeepAliveTimer->stop(); // <---- IS THIS SAFE?
}
Grazie.
Il terzo blocco di codice potrebbe utilizzare la rifinitura. Non è necessario fermare il timer prima che venga distrutto. L'intero blocco può essere ridotto a 'delete mpKeepAliveTimer; mpKeepAliveTimer = NULL; ' – cgmb