private double NextTimeout () {
DateTime now = DateTime.UtcNow;
int timeout = 0x7FFFFFF;
lock (TimerList) {
foreach (Timer timer in TimerList) {
int next = (int) (timer.Expires - now).TotalMilliseconds;
if (next < 0)
return 0;
if (next < timeout)
timeout = next;
}
}
if (timeout < Timer.Minimum)
timeout = Timer.Minimum;
return (double)((double)timeout/1000);
}