我制作了一个学生check_list程序,使用蓝牙适配器搜索学生手机蓝牙和检查他们是否存在,并在数据库的表格中保存学生信息。所有这些都很有效。但我想让它自动化我会将我的程序放在某台计算机上,就像服务器一样,程序会搜索每个课程的开始时间,如08.30,10.25 ......
我的问题是如何使用计时器?我知道如何使用计时器,但我如何在每个课程开始时间使用它?我的表格包括课程的开始时间。我也必须在搜索结束后停止计时器吗?如果我停止计时器,我可以再次重新运行计时器吗?
另外一个问题是,我如何跟踪新学生来或某些身体离开教室?
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以定期检查当前时间(例如每30秒使用一个简单的计时器)如果没有任何反应,您就会睡觉,如果它是10.25:开始您的蓝牙轮询。
在上课时间,您可以每5分钟轮询一次,看看是否有新生。
答案 2 :(得分: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(); }
答案 3 :(得分:0)
我会使用Quartz.NET并安排工作而不是搞乱计时器......