在程式設計中,經常會碰到需要做到如下功能:
1.有乙個不定時執行的方法a,在執行時需要判斷距離上一次執行過了多長時間,如果超過三秒就繼續執行,如果小於三秒就退出。
2.有乙個不定時執行的a方法和b方法,假設:a方法執行完成後,如果3秒內b方法沒有被執行,那麼就執行c方法,如果在3秒內執行了b方法,那麼就執行d方法。(a方法重複執行時分兩種,一種是重複執行會重新整理3秒的等待時間【簡單】,還有一種是不重新整理3秒等待時間【複雜】。
問題1解決:
system.diagnostics.stopwatch stopwatch = new stopwatch();
public void a()
else
stopwatch.restart();
}}
問題2解決:
分析:在問題2中,主要判斷的是,在執行b方法時,需要判斷距離a方法執行完後是不是過了3秒,如果是3秒內,就執行d,反之執行c。需要注意的是,b方法不一定會執行,還有可能a方法不一定執行
解決1:重複執行會重新整理3秒等待時間,利用stopwatch即可實現計算時間
舉例①:1s:a事件執行 3s:a事件執行 (重新整理時間) 5s:b事件執行
判斷:距離最新a事件執行小於三秒,執行d事件
舉例②:1s:a事件執行 5s:b事件執行
判斷:距離a事件執行大於三秒,第4s時執行c事件
解決**:
system.diagnostics.stopwatch stopwatch = new stopwatch();
public void a()
}public void b()
else
}
解決2:重複執行不會重新整理等待時間,也就是每次執行a事件都要判斷3秒內是否執行了b事件,需要時刻監聽b事件。需要做到:
b事件執行的時候看最近3秒有沒有a事件執行,有的話就執行d
a事件過了三秒後判斷是不是在這三秒內執行了b,沒有的話就執行c
舉例①:1s:a事件執行 3s:a事件執行 5s:b事件執行
判斷:距離第一次的a事件執行大於三秒,距離第二次的a事件執行小於三秒,在第4s時執行一次c事件,在第5s時執行一次d事件
舉例②:1s:a事件執行 3s:a事件執行 7s:b事件執行
判斷:距離第一次和第二次的a事件執行都大於三秒,在第4s時執行第一次c事件,在第6s時執行第二次c事件
解決**:
listlistdate = new list();//記錄開始定時的時間
listlisttime = new list();//儲存定時器
listlistif = new list();//判斷是否執行過b方法
public void a()
public void b()
if((datetime.now - listdate[i]).totalseconds > 5)//之前的內容就不需要判斷了
}}public void guoban(object source, system.timers.elapsedeventargs e)
}if ((datetime.now - listdate[i]).totalseconds > 5)//之前的內容就不需要判斷了
}}
springboot開啟定時器功能
場景 在開發中,遇到讓做定時任務很常見,而相比於傳統框架,springboot中寫定時任務顯得格外的簡單。思路 2步走 第一,開啟springboot的定時任務功能,這個只需在入口檔案類上加上注釋 enablescheduling enableasync 開啟非同步註解功能 enableschedu...
用PHP實現定時器功能
以前只知道用js能實現定時器功能,而且很方便,但今天做專案過程中要實現個功能模組,做到其中某部分時,心想要是可以通過php來實現個定時器功能就好了,於是在網上找了找,發現用gnore user abort 函式配合set time limit 函式 和乙個死迴圈就可以實現類似功能。雖然專案最終未使用...
Python如何實現定時器功能
timer 隔一定時間呼叫乙個函式,如果想實現每隔一段時間就呼叫乙個函式的話,就要在timer呼叫的函式中,再次設定timer。timer是thread的乙個派生類 python中的執行緒提供了j a執行緒功能的子集。usr bin env python from threading import ...