「タイムアウト」信号/スロット機能でQtのタイマーを停止しても安全ですか?QTimerに関するQtドキュメントに情報が見つからないようです。
サーバーに「keepalive」メッセージを定期的に送信するタイマーを作成しました。メッセージの送信中に何らかのエラーが発生した場合は、このタイマーを停止したいと思います。
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?
}
ありがとう。