很奇怪的问题,我机上的VB6在取系统时间时,得到的是64分之一秒的倍数。
一开始用Timer控件,发现Interval怎么设都只得最高每秒64HZ,
再后用Timer()、GetTickCount()函数也是一样,取回的时间都间隔64分之一秒。
以下是一个只有一个按键和TEXT的测试程序:
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Command1_Click()
    Dim i   As Integer
    Dim t1 As Long
    Text1 = ""
    While i < 100
        If t1 <> GetTickCount Then
            Text1 = Text1 & GetTickCount & ","
            t1 = GetTickCount
            i = i + 1
        End If
'        DoEvents
    Wend
End Sub
结果Text1内容:
11563703,11563718,11563734,11563750,11563765,11563781,11563796,11563812,11563828,11563843,11563859,11563875,11563890,11563906,11563921,11563937,11563953,11563968,11563984,11564000,11564015,11564031,11564046,11564062,11564078,11564093,11564109,11564125,11564140,11564156,11564171,11564187,11564203,11564218,11564234,11564250,11564265,11564281,11564296,11564312,11564328,11564343,11564359,11564375,11564390,11564406,11564421,11564437,11564453,11564468,11564484,11564500,11564515,11564531,11564546,11564562,11564578,11564593,11564609,11564625,11564640,11564656,11564671,11564687,11564703,11564718,11564734,11564750,11564765,11564781,11564796,11564812,11564828,11564843,11564859,11564875,11564890,11564906,11564921,11564937,11564953,11564968,11564984,11565000,11565015,11565031,11565046,11565062,11565078,11565093,11565109,11565125,11565140,11565156,11565171,11565187,11565203,11565218,11565234,11565250,
很明显以64HZ给出的时间。
有没哪位帮忙解说一下呢?
PS:CPU为AMD 64Bit 3200+

解决方案 »

  1.   

    QueryPerformanceFrequency 
    QueryPerformanceCounter 
      

  2.   

    没人知道吗?
    刚在虚拟机跑过(Microsoft Virtual PC 6,XP,256M内存),时间间隔变成10MS了
      

  3.   

    问题一:If t1 <> GetTickCount Then 这个有什么用吗?问题二:循环的操作都一样,当然时间间隔一样。问题三:你的实际需求是什么?
      

  4.   

    果然还是靠自己比较可靠
    找了N多资料
    大约就是,GetTickCount虽然以毫秒为单位,但精度只能达到十几毫秒(鄙视说精度是毫秒级的人,在网上说达到毫秒级的竟然有三分之二!),其步进为一个Tick的时间间隔,在每个系统上都不同(还是不明白为什么)。其它如SLeep 、Timer、TimeGetTime等函数也一样以1Tick为步进。
    不过没时间再细究了,就结了吧