[英]C# how to use timer?
我制作了一個使用藍牙適配器的學生check_list程序,可以搜索學生手機的藍牙並檢查它們是否存在,並將學生信息和日期保存在數據庫表中。它們都很好用,但是我想使其自動運行將我的程序放在服務器等計算機上,程序將在每課開始時進行搜索,例如08.30,10.25 ...
我的問題是如何使用計時器? 我知道如何使用計時器,但如何在每個課程的開始時間使用計時器?我有包含課程開始時間的表格。 搜索結束后還必須停止計時器嗎?如果我停止計時器,是否可以重新運行計時器?
還有一個問題,我如何跟蹤新來的學生或離開教室的某個身體?
您可以定期檢查當前時間(例如使用一個簡單的計時器每30秒檢查一次),如果什么也沒有發生,請睡覺,如果是10.25:開始進行藍牙輪詢。
在上課期間,您可以每5分鍾輪詢一次,看看是否有新學生在那里。
您可以將計時器的Interval
屬性設置為當前時間與下一堂課的時間之間的時差。 然后在完成該課程后為下一個課程重置差異。 但是,這有明顯的陷阱。 啟動/停止計時器時會發生什么? 您將需要為下一課重置時間間隔。
或者,您可以使計時器定期檢查是否需要重新檢查藍牙設備,以及是否需要重新檢查藍牙設備。 它可能不需要太准確。
// Add your own DateTimes
DateTime[] times = new[] { new DateTime(2010, 4, 20, 16, 30,0,0), new DateTime(2010, 4, 20, 17, 0,0,0) };
Timer t = new Timer();
t.Interval = 30000; // 30 seconds, feel free to change
// Each 30 secs check to see if the _time_ is before one of the ones specified; if it is RunMethod()
t.Tick += (sender, e) => { if (times.Any(d => { DateTime dt = DateTime.Now; new DateTime(dt.Year, dt.Month, dt.Day, d.Hour, d.Minute, d.Second, d.Millisecond).CompareTo(dt) <= 0 })) RunMethod(); }
我會使用Quartz.NET並安排作業,而不是弄亂計時器...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.