2010-04-19 57 views
0

我做了一個學生check_list程序,它使用藍牙適配器搜索學生手機藍牙和檢查他們是否存在和保存學生信息與日期在數據base.all他們工作很好。但我想使它自動我會把我的程序放在一些像計算機一樣的計算機上,並且程序會使搜索每一課的開始時間如08.30,10.25 ...C#如何使用計時器?

我的問題是如何使用計時器?我知道如何使用計時器,但是我怎樣才能在每次課程開始時使用它?我擁有包括課程開始時間的表格。我也必須在搜索結束後停止定時器嗎?如果我停止定時器,我可以重新運行定時器嗎?

另外還有一個問題,我該如何跟蹤新來的學生或者一些身體離開課室?

回答

0

您可以定期查看當前的時間(用一個簡單的計時器每30秒等),如果沒有任何反應,你的睡眠,如果是10.25:開始你的藍牙投票。

在上課時間,你可以每5分鐘輪詢一次,看看是否有新生。

0

您可以將計時器的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(); } 
+0

是我必須停止計時器或不?另外如果我不停止計時器會導致性能問題?因爲這個程序可能會在服務器上工作,可能會出現漏洞。 – Ercan 2010-04-19 22:34:44

0

我會使用Quartz.NET和調度作業,而不是與計時器搞亂......