繁体   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