Möglicherweise ist der Grund, dass der Schlaf nicht deterministisch ist. Es hält Ihren Thread für 600 Millisekunden nicht an. Es pausiert den Thread für mindestens 600 ms. Es könnte sehr gut über die 1 Sekunde Schiebe Ablauf gehen, die Sie gesetzt haben, ohne dass Sie es merken.
Dies ist nicht , wie in den anderen Antworten erwähnt, da Thread.Sleep () länger dauert als erwartet.
MemoryCache
scheint mit seinem gleitenden Timer ziemlich ungenau zu sein. Ich vermute, dass dies der Fall ist, damit sie das Sperren vermeiden und die Leistung des Caches aufrechterhalten können.
Ich denke also, die Lektion besteht darin, dass man sich nicht darauf verlassen kann, dass die Ablaufzeiten für Werte unter 2 Sekunden verschoben werden. Dies kann etwas damit zu tun haben, dass PollingInterval
auf 2 Sekunden gesetzt ist.
Code:
%Vor% Ich hatte das gleiche Problem. Aber eigentlich ist das Problem das, was @Colin gesagt hat. Die Thread.Sleep
übernimmt mehr als eine Sekunde.
Also habe ich einen Test mit einer größeren Verzögerung gemacht
%Vor%Und es ging vorbei. Ich bin mir nicht sicher, ob es immer funktionieren wird - wahrscheinlich nicht - aber ich habe gerade bestätigt, dass das Gleiten tatsächlich funktioniert.
Tags und Links .net-4.0