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; }