我必须实现一个应用程序来计算任务的时间。例如,用户可以启动和停止确定的任务,我必须知道他花在它上面的时间。我可以存储和计算开始和结束时间,但我想知道是否有可能在C#中实现具有三种方法的REST API,以便我的应用程序可以使用Web服务“调用它”。
StartTimer():当用户在某个应用程序中按下开始按钮时,此API方法将被“调用”并且计时器开始计数。 4小时后如果用户没有关闭任务(“StopTime()”方法没有被“调用”)我想做“某事”。
CurrentTime():返回实际花费的时间
StopTime():当用户按下停止按钮时,此API方法将被“调用”并且计时器停止,返回计时器值
我做了一些研究,发现了一些有关System.Timers.Timer和System.Threading.Timer的信息。我想知道是否使用其中一种(这种情况最好的是什么?)可能是一种好的方法,或者最好的方法是什么?
答案 0 :(得分:1)
如果您想在计算机上安排计时器,可以执行以下操作:
StartTimer方法 - 使用[StartTime]字段在数据库中创建计时器实体 CurrentTime方法 - 按id查找计时器实体,计算花费的时间,如(CurrentTime - StartTime) StopTimer - 按id查找计时器,将其标记为已停止,重新计时器值
另外,您需要按计划运行的后台工作人员(即每5分钟一次)并检查超时的计时器(在您的情况下为4小时)。那些工作者应该“做点什么”,比如向用户发送电子邮件。
如果您需要在4小时后停止计时器完全,请修改后台工作人员:
1)找到花费3小时55分钟或更长时间的计时器
2)使用System.Threading.Timer完成它