Fixed a nasty bug that would make the scheduler queue notifications using their delay time as absolute notification time, causing negative numbers to be passed to WaitOne(); updated unit test to expose this problem if it happens
git-svn-id: file:///srv/devel/repo-conversion/nusu@146 d2e56fa2-650e-0410-a79f-9358c0239efd
This commit is contained in:
parent
a6f7749121
commit
6b8362d57d
|
@ -47,6 +47,7 @@ namespace Nuclex.Support.Scheduling {
|
||||||
/// <param name="utcStartTime">Start time in UTC format</param>
|
/// <param name="utcStartTime">Start time in UTC format</param>
|
||||||
public MockTimeSource(DateTime utcStartTime) {
|
public MockTimeSource(DateTime utcStartTime) {
|
||||||
this.currentTime = utcStartTime;
|
this.currentTime = utcStartTime;
|
||||||
|
this.currentTicks = 1000000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Waits for an AutoResetEvent to become signalled</summary>
|
/// <summary>Waits for an AutoResetEvent to become signalled</summary>
|
||||||
|
|
|
@ -128,10 +128,10 @@ namespace Nuclex.Support.Scheduling {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion // class NotificationComparer
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion // class NotificationComparer
|
||||||
|
|
||||||
/// <summary>Initializes a new scheduler using the default time source</summary>
|
/// <summary>Initializes a new scheduler using the default time source</summary>
|
||||||
public Scheduler() : this(DefaultTimeSource) { }
|
public Scheduler() : this(DefaultTimeSource) { }
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ namespace Nuclex.Support.Scheduling {
|
||||||
return scheduleNotification(
|
return scheduleNotification(
|
||||||
new Notification(
|
new Notification(
|
||||||
0,
|
0,
|
||||||
delay.Ticks,
|
this.timeSource.Ticks + delay.Ticks,
|
||||||
DateTime.MinValue,
|
DateTime.MinValue,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
|
@ -256,7 +256,7 @@ namespace Nuclex.Support.Scheduling {
|
||||||
return scheduleNotification(
|
return scheduleNotification(
|
||||||
new Notification(
|
new Notification(
|
||||||
0,
|
0,
|
||||||
(long)delayMilliseconds * TicksPerMillisecond,
|
this.timeSource.Ticks + ((long)delayMilliseconds * TicksPerMillisecond),
|
||||||
DateTime.MinValue,
|
DateTime.MinValue,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
|
@ -276,7 +276,7 @@ namespace Nuclex.Support.Scheduling {
|
||||||
return scheduleNotification(
|
return scheduleNotification(
|
||||||
new Notification(
|
new Notification(
|
||||||
interval.Ticks,
|
interval.Ticks,
|
||||||
delay.Ticks,
|
this.timeSource.Ticks + delay.Ticks,
|
||||||
DateTime.MinValue,
|
DateTime.MinValue,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
|
@ -302,7 +302,7 @@ namespace Nuclex.Support.Scheduling {
|
||||||
return scheduleNotification(
|
return scheduleNotification(
|
||||||
new Notification(
|
new Notification(
|
||||||
(long)intervalMilliseconds * TicksPerMillisecond,
|
(long)intervalMilliseconds * TicksPerMillisecond,
|
||||||
(long)delayMilliseconds * TicksPerMillisecond,
|
this.timeSource.Ticks + ((long)delayMilliseconds * TicksPerMillisecond),
|
||||||
DateTime.MinValue,
|
DateTime.MinValue,
|
||||||
callback
|
callback
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user