Code: Select all
class Program
{
static void Main(string[] args)
{
Console.WriteLine("TaskDelayTest .NET Framework");
while (true)
{
DateTime now = DateTime.UtcNow;
TimeSpan wait = TimeSpan.FromMilliseconds(1000);
DateTime then = now + wait;
Task delay = Task.Delay(wait);
delay.ContinueWith(Execute, then);
Thread.Sleep(100);
}
}
static void Execute(Task delay, object arg)
{
DateTime later = DateTime.UtcNow;
DateTime then = (DateTime)arg;
if (later < then)
{
Console.WriteLine("Early execute!!!! {0:n0} ns", (then.Ticks - later.Ticks) * 100);
}
}
}
Code: Select all
TaskDelayTest .NET Core
Early execute!!!! 199,800 ns
Early execute!!!! 22,200 ns
Early execute!!!! 353,300 ns
Early execute!!!! 571,200 ns
Early execute!!!! 90,700 ns
Early execute!!!! 85,600 ns
Early execute!!!! 9,300 ns
Early execute!!!! 540,600 ns
Early execute!!!! 141,200 ns
Early execute!!!! 107,800 ns
Early execute!!!! 397,200 ns
Early execute!!!! 297,000 ns