使用Environment.TickCount()的经过时间 - 避免换行

use*_*755 1 .net vb.net rollover gettickcount

绝对值是否保护Environment.TickCount包装中的以下代码?

If Math.Abs((Environment.TickCount And Int32.MaxValue) - StartTime) >= Interval Then
    StartTime = Environment.TickCount And Int32.MaxValue ' set up next interval
    ...
    ...
    ...
End If
Run Code Online (Sandbox Code Playgroud)

有没有更好的防范Environment.TickCount环绕的方法?

(这是.NET 1.1.)

编辑 - 根据Microsoft Environment.TickCount帮助修改代码.

Qwe*_*tie 8

如果要测量的时间跨度不超过24.8天(任何更长的时间都不能用有符号整数表示),避免包装问题很容易.在C#中:

int start = Environment.TickCount;
DoLongRunningOperation();
int elapsedTime = Environment.TickCount - start;
Run Code Online (Sandbox Code Playgroud)

我对VB.NET不是很熟悉,但只要你使用未经检查的数学运算,这就行了,你不必担心换行.

例如,如果Environment.TickCount从2147483600换行到-2147483596,则无关紧要.您仍然可以计算它们之间的差异,即100毫秒.