From a18cd1c5e9e81da63da1e90cc9d80d3106afed47 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 20 Mar 2026 18:18:16 +0800 Subject: [PATCH] fix: Refactor background worker handler to use delegate type for improved clarity and consistency --- .../HangfireDynamicBackgroundWorkerManager.cs | 2 +- .../Quartz/QuartzDynamicBackgroundWorkerManager.cs | 2 +- .../TickerQ/TickerQDynamicBackgroundWorkerManager.cs | 3 +-- .../DefaultDynamicBackgroundWorkerManager.cs | 4 ++-- .../DynamicBackgroundWorkerHandler.cs | 6 ++++++ .../DynamicBackgroundWorkerHandlerRegistry.cs | 11 ++++------- .../DynamicBackgroundWorkerManagerExtensions.cs | 3 +-- .../IDynamicBackgroundWorkerHandlerRegistry.cs | 8 ++------ .../IDynamicBackgroundWorkerManager.cs | 3 +-- .../InMemoryDynamicBackgroundWorker.cs | 6 ++---- 10 files changed, 21 insertions(+), 27 deletions(-) create mode 100644 framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandler.cs diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs index 5f310827a2..77e7d37a97 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireDynamicBackgroundWorkerManager.cs @@ -31,7 +31,7 @@ public class HangfireDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMa public virtual Task AddAsync( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler, + DynamicBackgroundWorkerHandler handler, CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs index 7ff3f85a1d..8f409e011d 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzDynamicBackgroundWorkerManager.cs @@ -29,7 +29,7 @@ public class QuartzDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMana public virtual async Task AddAsync( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler, + DynamicBackgroundWorkerHandler handler, CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); diff --git a/framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQDynamicBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQDynamicBackgroundWorkerManager.cs index 5cbeb12faf..b5f1cfcbe4 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQDynamicBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.TickerQ/Volo/Abp/BackgroundWorkers/TickerQ/TickerQDynamicBackgroundWorkerManager.cs @@ -1,4 +1,3 @@ -using System; using System.Threading; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; @@ -11,7 +10,7 @@ public class TickerQDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan public virtual Task AddAsync( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler, + DynamicBackgroundWorkerHandler handler, CancellationToken cancellationToken = default) { throw new AbpException( diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs index 598bd74014..a3073d0e53 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DefaultDynamicBackgroundWorkerManager.cs @@ -30,7 +30,7 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan public virtual async Task AddAsync( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler, + DynamicBackgroundWorkerHandler handler, CancellationToken cancellationToken = default) { Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); @@ -155,7 +155,7 @@ public class DefaultDynamicBackgroundWorkerManager : IDynamicBackgroundWorkerMan protected virtual InMemoryDynamicBackgroundWorker CreateDynamicWorker( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler) + DynamicBackgroundWorkerHandler handler) { var timer = ServiceProvider.GetRequiredService(); var serviceScopeFactory = ServiceProvider.GetRequiredService(); diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandler.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandler.cs new file mode 100644 index 0000000000..28f5c933d8 --- /dev/null +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandler.cs @@ -0,0 +1,6 @@ +using System.Threading; +using System.Threading.Tasks; + +namespace Volo.Abp.BackgroundWorkers; + +public delegate Task DynamicBackgroundWorkerHandler(DynamicBackgroundWorkerExecutionContext context, CancellationToken cancellationToken); \ No newline at end of file diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandlerRegistry.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandlerRegistry.cs index 0f9ea8c022..a30ea3e95a 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandlerRegistry.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerHandlerRegistry.cs @@ -1,21 +1,18 @@ -using System; using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; using Volo.Abp.DependencyInjection; namespace Volo.Abp.BackgroundWorkers; public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHandlerRegistry, ISingletonDependency { - protected ConcurrentDictionary> Handlers { get; } + protected ConcurrentDictionary Handlers { get; } public DynamicBackgroundWorkerHandlerRegistry() { - Handlers = new ConcurrentDictionary>(); + Handlers = new ConcurrentDictionary(); } - public virtual void Register(string workerName, Func handler) + public virtual void Register(string workerName, DynamicBackgroundWorkerHandler handler) { Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); Check.NotNull(handler, nameof(handler)); @@ -35,7 +32,7 @@ public class DynamicBackgroundWorkerHandlerRegistry : IDynamicBackgroundWorkerHa return Handlers.ContainsKey(workerName); } - public virtual Func? Get(string workerName) + public virtual DynamicBackgroundWorkerHandler? Get(string workerName) { Check.NotNullOrWhiteSpace(workerName, nameof(workerName)); return Handlers.TryGetValue(workerName, out var handler) ? handler : null; diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManagerExtensions.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManagerExtensions.cs index 498a37e28b..5fedbf1360 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManagerExtensions.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/DynamicBackgroundWorkerManagerExtensions.cs @@ -1,4 +1,3 @@ -using System; using System.Threading; using System.Threading.Tasks; @@ -12,7 +11,7 @@ public static class DynamicBackgroundWorkerManagerExtensions public static Task AddAsync( this IDynamicBackgroundWorkerManager manager, string workerName, - Func handler, + DynamicBackgroundWorkerHandler handler, CancellationToken cancellationToken = default) { return manager.AddAsync( diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerHandlerRegistry.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerHandlerRegistry.cs index eb0db0e6d0..7915f108db 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerHandlerRegistry.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerHandlerRegistry.cs @@ -1,16 +1,12 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - namespace Volo.Abp.BackgroundWorkers; public interface IDynamicBackgroundWorkerHandlerRegistry { - void Register(string workerName, Func handler); + void Register(string workerName, DynamicBackgroundWorkerHandler handler); bool Unregister(string workerName); bool IsRegistered(string workerName); - Func? Get(string workerName); + DynamicBackgroundWorkerHandler? Get(string workerName); } diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs index 317aa36433..5054f67897 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IDynamicBackgroundWorkerManager.cs @@ -1,4 +1,3 @@ -using System; using System.Threading; using System.Threading.Tasks; @@ -17,7 +16,7 @@ public interface IDynamicBackgroundWorkerManager Task AddAsync( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler, + DynamicBackgroundWorkerHandler handler, CancellationToken cancellationToken = default); /// diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs index 5001e96ff4..bab468a655 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/InMemoryDynamicBackgroundWorker.cs @@ -1,8 +1,6 @@ -using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using Volo.Abp.Threading; namespace Volo.Abp.BackgroundWorkers; @@ -11,12 +9,12 @@ public class InMemoryDynamicBackgroundWorker : AsyncPeriodicBackgroundWorkerBase { public string WorkerName { get; } - private readonly Func _handler; + private readonly DynamicBackgroundWorkerHandler _handler; public InMemoryDynamicBackgroundWorker( string workerName, DynamicBackgroundWorkerSchedule schedule, - Func handler, + DynamicBackgroundWorkerHandler handler, AbpAsyncTimer timer, IServiceScopeFactory serviceScopeFactory) : base(timer, serviceScopeFactory)