VB.Net(VS2010)调用系统GetTickCount函数计算时间差错误
VB.Net(VS2010)调用系统GetTickCount函数计算时间差异常
请高手指教,今天我在用VB.net调用GetTickCount函数计算时间差,发现结果异常,C的值为-4294967405,用的是VS2010环境,但是使用VS2005就不存在这个情况(C=-109),注:不是同一台电脑。
还请高手指教
实验代码如下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Long
Dim j As Long
Dim c As Long
i = GetTickCount()
Threading.Thread.Sleep(100)
j = GetTickCount()
c = i - j
End Sub
End Class
------解决方案--------------------
GetTickCount返回当前操作系统启动后的毫秒数。最多包含49.7天。如果系统连续运行,将在约 24.9 天内从零递增至 Int32.MaxValue,然后跳至 Int32.MinValue(这是一个负数),再在接下来的 24.9 天内递增至零。 如此循环往复。
------解决方案--------------------
请高手指教,今天我在用VB.net调用GetTickCount函数计算时间差,发现结果异常,C的值为-4294967405,用的是VS2010环境,但是使用VS2005就不存在这个情况(C=-109),注:不是同一台电脑。
还请高手指教
实验代码如下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Long
Dim j As Long
Dim c As Long
i = GetTickCount()
Threading.Thread.Sleep(100)
j = GetTickCount()
c = i - j
End Sub
End Class
------解决方案--------------------
GetTickCount返回当前操作系统启动后的毫秒数。最多包含49.7天。如果系统连续运行,将在约 24.9 天内从零递增至 Int32.MaxValue,然后跳至 Int32.MinValue(这是一个负数),再在接下来的 24.9 天内递增至零。 如此循环往复。
------解决方案--------------------
- VB.NET code
Private Declare Function GetCurrentTime Lib "kernel32" Alias "GetTickCount" () As Integer
------解决方案--------------------
4294967405二进制是100000000000000000000000001101101,其末尾1101101就是十进制的109。
GetTickCount本身返回int,你声明为long后会导致这个int前的4个字节的数据被包含进来,而那4个字节指不定是什么。