ETA: использование Environment.TickCount не представляет той же проблемы.
ETA2: я должен добавить, что на самом деле я не использую Forms.Timer в своем приложении - так как это сведет на нет использование высокочастотного таймера,Я использовал его здесь для упрощения кода.
ETA3: я опубликовал обходной путь в качестве ответа ниже.
У меня проблемы с классом StopWatch, который я наблюдаюна ноутбуке с XP, но не другой ноутбук с Win7.Вот тестовый код:
Public Class FormTest
Inherits Form
Private WithEvents Timer1 As System.Windows.Forms.Timer = New System.Windows.Forms.Timer
Private sw As Stopwatch = New Stopwatch
Public Sub New()
Me.Timer1.Interval = 1
End Sub
Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
MyBase.OnClick(e)
Me.sw.Start()
Me.Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Text = sw.ElapsedMilliseconds.ToString
Me.Update()
End Sub
End Class
В Windows 7, проверяя прошедшие миллисекунды каждую секунду, я получаю что-то вроде: 0, 1010, 2030, 3005 ...
В XP я получаю что-то вроде: 0, 200, 306, 390, 512, ...
То есть это далеко.Мы не говорим о миллисекундах.Это не имеет никакого отношения к тому, является ли таймер высоким разрешением, поскольку это сообщает как истинное.Насколько я знаю, это никак не связано со сродством процессоров, так как я пытался установить его для каждого из двух процессоров.
Как я уже сказал, я думаю, что это связано с XP, но это может бытьделать с разными ядрами - оба ноутбука, однако, Intel.