From 07359259f93a5ce2267663e39f519fd94190565f Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sun, 23 Jul 2017 18:35:06 +0200 Subject: [PATCH] Potential timer fix! --- .../Timers/CompletionTimer.cs | 18 ++++++++++++------ .../Timers/CompletionTimerTests.cs | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Squidex.Infrastructure/Timers/CompletionTimer.cs b/src/Squidex.Infrastructure/Timers/CompletionTimer.cs index eec58576c..62504ce59 100644 --- a/src/Squidex.Infrastructure/Timers/CompletionTimer.cs +++ b/src/Squidex.Infrastructure/Timers/CompletionTimer.cs @@ -52,7 +52,7 @@ namespace Squidex.Infrastructure.Timers { if (initialDelay > 0) { - await WaitAsync(initialDelay); + await WaitAsync(initialDelay).ConfigureAwait(false); } while (requiresAtLeastOne == 2 || !disposeToken.IsCancellationRequested) @@ -61,11 +61,15 @@ namespace Squidex.Infrastructure.Timers { await callback(disposeToken.Token).ConfigureAwait(false); } - catch (OperationCanceledException) { } - - requiresAtLeastOne = 1; + catch (OperationCanceledException) + { + } + finally + { + requiresAtLeastOne = 1; + } - await WaitAsync(delay); + await WaitAsync(delay).ConfigureAwait(false); } } @@ -80,7 +84,9 @@ namespace Squidex.Infrastructure.Timers await Task.Delay(intervall, cts.Token).ConfigureAwait(false); } } - catch (OperationCanceledException) { } + catch (OperationCanceledException) + { + } } } } diff --git a/tests/Squidex.Infrastructure.Tests/Timers/CompletionTimerTests.cs b/tests/Squidex.Infrastructure.Tests/Timers/CompletionTimerTests.cs index aa7f228c0..01f7c35e5 100644 --- a/tests/Squidex.Infrastructure.Tests/Timers/CompletionTimerTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Timers/CompletionTimerTests.cs @@ -18,12 +18,12 @@ namespace Squidex.Infrastructure.Timers { var called = false; - var timer = new CompletionTimer(20000, ct => + var timer = new CompletionTimer(2000, ct => { called = true; return TaskHelper.Done; - }, 20000); + }, 2000); timer.Wakeup(); timer.Dispose();