Qt zamanlayıcısını "zaman aşımı" sinyal/slot işlevinde durdurmak güvenli midir? QTimer ile ilgili Qt belgelerinde herhangi bir bilgi bulamıyor gibi görünüyor.Qt QTimer bu şekilde durdurmak güvenli midir?
Belirli aralıklarla "canlı tut" iletilerini sunucuya gönderen bir zamanlayıcı oluşturdum. Mesajımı gönderirken bir çeşit hata varsa, bu zamanlayıcı durdurulmasını istiyorum.
private:
QTimer* mpKeepAliveTimer;
Zamanlayıcı böyle başlatılır:
mpKeepAliveTimer = new QTimer(/* this */);
QObject::connect(mpKeepAliveTimer, SIGNAL(timeout()), this, SLOT(OnKeepAlive()));
mpKeepAliveTimer->start(KEEP_ALIVE_PERIOD);
böyle durdu:
if (mpKeepAliveTimer != NULL) // <-- Edited
{
if (mpKeepAliveTimer->isActive() == true)
mpKeepAliveTimer->stop();
delete mpKeepAliveTimer;
mpKeepAliveTimer = NULL;
}
Zaman Aşımı işlevi şöyle görünür:
void Classname::OnKeepAlive()
{
if (isErrorFound == true)
mpKeepAliveTimer->stop(); // <---- IS THIS SAFE?
}
teşekkür ederiz.
Üçüncü kod bloğu rafinasyon kullanabilir. Yok edilmeden önce zamanlayıcıyı durdurmaya gerek yok. Tüm blok mpKeepAliveTimer silmek için azaltılabilir; mpKeepAliveTimer = NULL; ' – cgmb