我正在尝试基于数据库中的值在C#中生成自定义事件,每当值达到某个限制(假设为0)时,我已经成功地在窗口服务中完成了此操作,我不断地监视我的数据库,并且值达到此限制的时刻,我就在C#中生成一个事件
现在在这种方法中有一个调整,如果值保持"0“5秒,我需要生成事件。我计划如何做创建一个列表行,所以每当一个值达到0时,我就插入到该列表中,在后台为该行启动计时器。5秒后,我需要再次从DB获取值,如果它仍然是0,那么只生成一个事件。
我想知道这是不是解决我的问题的正确方法,或者有什么有效/更简单的方法可以做到这一点?
发布于 2014-11-18 19:32:52
我会为每个值存储一个DateTime.UtcNow
(可能在ConcurrentDictionary<Row, DateTime>
中)。然后,第二个线程、计时器、任务等可以定期迭代此字典(可能每秒一次),并检查特定行的时间是否已过,然后引发给定行的事件。
同时,原始数据库监视器可以在看到某些更改时更新该字典,无论是通过更新时间戳还是添加、删除一行。
https://stackoverflow.com/questions/26993100
复制相似问题