From 96c562b8bbd1e3d3bf12ab735bf3aa8530b2fb14 Mon Sep 17 00:00:00 2001 From: machonky Date: Thu, 6 Jun 2024 13:21:00 +0800 Subject: [PATCH] BackgroundWorkers should be restartable to permit changes in Timer interval As BackgroundWorkers are a Singleton, they should be restartable to permit changes in Timer interval. --- .../Abp/BackgroundWorkers/BackgroundWorkerBase.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs index 91bc360f72..ca9cdf4a51 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs @@ -22,10 +22,16 @@ public abstract class BackgroundWorkerBase : IBackgroundWorker protected ILogger Logger => LazyServiceProvider.LazyGetService(provider => LoggerFactory?.CreateLogger(GetType().FullName!) ?? NullLogger.Instance); - protected CancellationTokenSource StoppingTokenSource { get; } - protected CancellationToken StoppingToken { get; } + protected CancellationTokenSource StoppingTokenSource { get; private set; } + + protected CancellationToken StoppingToken { get; private set; } public BackgroundWorkerBase() + { + ResetStoppingCancellationTokenSource(); + } + + private void ResetStoppingCancellationTokenSource() { StoppingTokenSource = new CancellationTokenSource(); StoppingToken = StoppingTokenSource.Token; @@ -42,6 +48,9 @@ public abstract class BackgroundWorkerBase : IBackgroundWorker Logger.LogDebug("Stopped background worker: " + ToString()); StoppingTokenSource.Cancel(); StoppingTokenSource.Dispose(); + + ResetStoppingCancellationTokenSource(); + return Task.CompletedTask; }