Безопасно ли останавливать Qt QTimer таким образом?

Безопасно ли останавливать таймер Qt в его функции сигнала/слота «тайм-аут»? Не могу найти никакой информации в документации Qt о QTimer .

Я создал таймер, который периодически отправляет на сервер сообщения «оставаться в живых». Я хочу, чтобы этот таймер был остановлен, если при отправке моего сообщения произошла какая-то ошибка.

private:
   QTimer* mpKeepAliveTimer;

Таймер инициализируется так:

mpKeepAliveTimer = new QTimer(/* this */);

QObject::connect(mpKeepAliveTimer, SIGNAL(timeout()), this, SLOT(OnKeepAlive()));

mpKeepAliveTimer->start(KEEP_ALIVE_PERIOD);

Остановился вот так:

if (mpKeepAliveTimer != NULL) // <-- Edited
{
    if (mpKeepAliveTimer->isActive() == true)
        mpKeepAliveTimer->stop();

    delete mpKeepAliveTimer;
    mpKeepAliveTimer = NULL;
}

Функция тайм-аута выглядит так:

void Classname::OnKeepAlive()
{
   if (isErrorFound == true)
      mpKeepAliveTimer->stop();   // <---- IS THIS SAFE?
}

Спасибо.

6
задан Gediminas 16 August 2012 в 07:48
поделиться