C#中的System.Timers.Timer
大家好!
我现在有个问题想向大家请教下:
我用C#4.0做了一个后台Windows服务,其中使用到了System.Timers的Timer对象,我要实现的功能如下:
1、有一台DVR硬盘摄像机,它有几个频道,每个频道都有一个摄像头,当每一个摄像头捕捉到异常情况时就会发出电邮。
2、在Windows服务中我使用了一个Timer对象定时接收从DVR发出的邮件(包括邮件内容,邮件发出的时间),并把它存放到数据库中。
3、同时我启用了另一个Timer对象来分析所接收到的邮件,比如我把这个Timer的Interval设置为30秒,则它每隔30秒就会分析在过去30秒内收到了哪些邮件,也就是从数据库中查询过去30秒内收到了哪些邮件(根据邮件的发出的时间查询),如果我将它的Interval设置为60秒,则它必须分析在过去60秒内接收到了哪些邮件,以此类推。
4、但现在的问题是,我想知道在过去30秒内是否有不同的摄像头同时都发出了邮件,比如DVR连接两个摄像头,我想知道,某一个30秒内这两个摄像头是否都发出了警报邮件,因为定时器是定时工作的,有可能所分析的数据并不是准确的,或者是我使用的方法不对。例如,摄像头1在12:55:10时发出了警报邮件,摄像头2在12:55:31时发出了警报邮件,这两个邮件确实是在30秒范围内,而我的定时器有可能是12:55:20时才经过了一个定时周期,所以如果从12:55:20算起,在过去的30秒内就只有12:55:10这个符合条件,就把12:55:31这个时间给漏掉了,但实际情况是:摄像头1和摄像头2两个发出警报邮件的时间间隔是在30秒之内的,这个问题不知道有没有什么好的方法,望各位赐教,谢谢了!