加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – GetLastInputTime显示不可能的时间?

发布时间:2020-12-15 23:33:04 所属栏目:百科 来源:网络整理
导读:要确定,如果PC没有使用一段时间,我正在使用Win32API.GetLastInputTime()方法.我只是从DateTime.Now中减去它的值,并将它与存储在设置中的某个值进行比较. 之前它运作得很好,但最近GetLastInputTime开始显示完全荒谬的结果 – 它显示了我未来的时间.今天它向我
要确定,如果PC没有使用一段时间,我正在使用Win32API.GetLastInputTime()方法.我只是从DateTime.Now中减去它的值,并将它与存储在设置中的某个值进行比较.

之前它运作得很好,但最近GetLastInputTime开始显示完全荒谬的结果 – 它显示了我未来的时间.今天它向我展示了2016年7月2日.

那么,有没有人有任何想法,发生了什么? GetLastInputTime如何获得时间,以及它是如何可能的,这次是未来的?

解决方法

由于GetLastInputTime返回刻度为UInt32(DWORD)

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85).aspx

你可以有一个整数溢出:

The elapsed time is stored as a DWORD value. Therefore,the time will
wrap around to zero if the system is run continuously for 49.7 days.
To avoid this problem,use the GetTickCount64 function. Otherwise,
check for an overflow condition when comparing times.

因此有未来的日期:

13 May 2016 + 49.7 days == 2 July 2016

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读