1. 程式人生 > >Qt程式執行一段時間後,QTimer無法使用。

Qt程式執行一段時間後,QTimer無法使用。

最近一個運行了很久的Qt專案突然開始出現問題。

跟蹤了好久發現Qtimer的remainingTime一直都是0。不會減到-1,也不會促發timeout訊號。

最後研究一下發現QTimer使用windows控制代碼。QTimer::signalShot()這個靜態函式會建立一個QTimer。而且建立者析構了,如果這個timer不停止,不會析構。也不會釋放windows控制代碼。這樣程式執行久了或者物件建立多了就會出現windows控制代碼不夠用的情況。所以QTimer,慎用。