我已经在C#中制作了一个有计时器的考试应用程序,同时参加考试时假设候选人在1分30秒时按下窗口的最小化按钮(不释放鼠标),即使候选人暂停继续按下鼠标10分钟,但是当鼠标被释放时,时间从暂停的第二个时间开始恢复,即1分30秒。我希望计时器能够在没有任何暂停的情况下继续。
答案 0 :(得分:4)
您使用的计时器组件是什么? System.Windows.Forms.Timer
或System.Threading.Timer
?
我怀疑S.W.F.Timer
使用SetTimer
API调用,该调用使用窗口消息来解释您所看到的内容,线程计时器会更好。
你也可以使用一个线程,在线程中存储一个DateTime.UtcNow
和每100ms或者其他东西,得到另一个DateTime.UtcNow
并检查TimeSpan
经过的时间。
答案 1 :(得分:2)
使用System.Threading.Timer
类,因为它应该独立于Windows消息
答案 2 :(得分:1)
您可以在测试开始时记录DateTime.UtcNow
,并在计时器的Elapsed
事件中监控DateTime.UtcNow - startTime
。如果差异大于您的要求,您可以在那里结束测试。