簡體   English   中英

C#如何使用計時器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM