public ExecuteAsync ( Func |
||
function | Func |
|
shutdownAction | System.Action | |
return | Task |
public async Task ExecuteAsync(Func<Task<bool>> function, Action shutdownAction = null)
{
if (_delayOnExecute)
{
await _taskDelay.Delay(_interval);
}
bool shouldContinue = true;
while (shouldContinue)
{
shouldContinue = await function();
if (shouldContinue)
{
await _taskDelay.Delay(_interval);
}
}
shutdownAction?.Invoke();
}
}
AsynchronousIntervalTimer::ExecuteAsync ( Func |
public async Task DelayOnExecuteWaitsForIntervalBeforeFirstTaskWithCancellationToken() { // Arrange Mock<IAsynchronousDelay> delay = new Mock<IAsynchronousDelay>(); AsynchronousIntervalTimer timer = new AsynchronousIntervalTimer(delay.Object, TimeSpan.FromMilliseconds(PretendDelayInMilliseconds), true); CancellationTokenSource source = new CancellationTokenSource(); // Act await timer.ExecuteAsync(ct => Task.FromResult(false), source.Token); // Assert delay.Verify(x => x.Delay(TimeSpan.FromMilliseconds(PretendDelayInMilliseconds), source.Token)); }