C# DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() Always Get Same Data in short period

Advertisements

Example Code:
.net core 3

await Task.Delay( 1000 );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

await Task.Delay( 1000 );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

await Task.Delay( 1000 );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Console.WriteLine( "Hello World!!!!!!!!!" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() );

Expect to get different number , but all the same if without any delay.

I wonder how could this happened?

>Solution :

Windows is not a real-time operating system. It has a system clock resolution of 15.6ms.

The default timer resolution on Windows is 15.6 ms – a timer interrupt 64 times a second.

https://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/#:~:text=The%20default%20timer%20resolution%20on,consumption%20and%20harm%20battery%20life.

Your code is running faster than the system updates.

Leave a ReplyCancel reply