使用定時器解決物件事件中自釋放的問題

2021-04-14 01:33:20 字數 632 閱讀 8209

乙個多月來,加班似乎成了家常便飯,緊追慢趕手頭幾乎不可能實現的專案,也很少有機會寫點什麼了。

最近在實現delphi server控制項組操作word編輯文件的時候,遇到了3年前就曾遇到的問題,以為這次能夠圓滿解決,但最後發現還是沿用的老方法--看來對於實現層,我還是個新手啊...好了廢話不說,來說說我發明的這個笨法。

問題的由來:

解決方法:

無奈中,我在每個物件的管理類中增加了乙個ttimer作為server,來監視物件的事件變化,當物件需要自釋放時,在響應事件中啟動這個server(一般都要在物件的釋放通知事件中來啟動這個server),server啟動後會檢測並執行預先設定好的操作,之後停止自己。

不足之處:

該方法只適合解決物件釋放通知事件的自釋放問題,因為,只有在這個時候,我們才認為server被通知後,物件立即被釋放掉了,而server的觸發間隔基本可以應付一般情況。

當然,如果你的物件需要進行的清理操作時間較長,那麼就在server中定義乙個標誌符,來對失敗的操作(比如讀取檔案失敗)進行重試,直到操作成功執行(即等待物件完全釋放)。

後記:對於該類問題,也許是由於水平有限造成的設計問題,因此,除非一些極端情況,我們應該尋找更加有效的設計方案來解決此類問題。但對於單執行緒設計中,此方法可以解決某些呼叫交叉問題。

Qt 中定時器事件

定時器是用來處理週期性事件的一種物件,類似於硬體定時器。例如設定乙個定時器的定時週期為 1000 毫秒,那麼每 1000 毫秒就會發射定時器的 timeout 訊號,在訊號關聯的槽函式裡就可以做相應的處理。定時器例項程式執行示意圖 要使用定時器,需要新增qtimer類 include 1.視窗類新增...

Qt使用定時器方法一 定時器事件

首先,qt物件的基類qobject為我們提供了乙個基本的定時器,它是通過定時器事件來觸發的。其步驟如下 step1 通過函式int qobject starttimer int interval 函式來啟動乙個定時器,其中引數interval為時間間隔,其時間單位為毫秒 ms starttimer ...

vc中定時器的使用

在程式設計時,會經常使用到定時器。使用定時器的方法比較簡單,通常告訴windows乙個時間間隔,然後windows以此時間間隔週期性觸發程式。通常有兩種方法來實現 傳送wm timer訊息和呼叫應用程式定義的 函式。1.1 用wm timer來設定定時器 先請看settimer這個api函式的原型 ...