wasSharp
//Timers/Timer.cs |
@@ -56,6 +56,12 @@ |
|
public TimeSpan Period { get; set; } = TimeSpan.Zero; |
|
public DateTime ScheduledTime |
{ |
get; |
set; |
} |
|
public void Dispose() |
{ |
// Stop the timer. |
@@ -97,13 +103,31 @@ |
Task.Run(Callback, tokenSource.Token); |
if (Disposed) |
return; |
Delay = !Period.Equals(TimeSpan.Zero) ? Task.Delay(Period, tokenSource.Token) : CompletedTask; |
switch (!Period.Equals(TimeSpan.Zero)) |
{ |
case true: |
ScheduledTime = DateTime.UtcNow; |
Delay = Task.Delay(DueTime, tokenSource.Token); |
break; |
default: |
Delay = CompletedTask; |
break; |
} |
if (Disposed || Delay.IsCompleted) |
return; |
Delay.ContinueWith(o => tick(), tokenSource.Token); |
}; |
|
Delay = !DueTime.Equals(TimeSpan.Zero) ? Task.Delay(DueTime, tokenSource.Token) : CompletedTask; |
switch (!DueTime.Equals(TimeSpan.Zero)) |
{ |
case true: |
ScheduledTime = DateTime.UtcNow; |
Delay = Task.Delay(DueTime, tokenSource.Token); |
break; |
default: |
Delay = CompletedTask; |
break; |
} |
if (Disposed || Delay.IsCompleted) |
return; |
Delay.ContinueWith(o => tick(), tokenSource.Token); |