diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs index f23ecbf239..b2a66f6fc4 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs @@ -4,13 +4,12 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Volo.Abp.BackgroundWorkers; -using Volo.Abp.DependencyInjection; using Volo.Abp.Threading; using Volo.Abp.Timing; namespace Volo.Abp.BackgroundJobs { - public class BackgroundJobWorker : PeriodicBackgroundWorkerBase, IBackgroundJobWorker, ISingletonDependency + public class BackgroundJobWorker : PeriodicBackgroundWorkerBase, IBackgroundJobWorker { protected BackgroundJobOptions JobOptions { get; } diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs index 0c8aff450c..0994029f70 100644 --- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs +++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/DefaultBackgroundJobManager.cs @@ -10,7 +10,7 @@ namespace Volo.Abp.BackgroundJobs /// Default implementation of . /// [Dependency(ReplaceServices = true)] - public class DefaultBackgroundJobManager : IBackgroundJobManager, ISingletonDependency + public class DefaultBackgroundJobManager : IBackgroundJobManager, ITransientDependency { protected IClock Clock { get; } protected IBackgroundJobSerializer Serializer { get; } diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerManager.cs index 16c9f08d10..6f8d57ed5c 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerManager.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerManager.cs @@ -26,7 +26,7 @@ namespace Volo.Abp.BackgroundWorkers _backgroundWorkers = new List(); } - public void Add(IBackgroundWorker worker) + public virtual void Add(IBackgroundWorker worker) { _backgroundWorkers.Add(worker); @@ -36,7 +36,7 @@ namespace Volo.Abp.BackgroundWorkers } } - public void Dispose() + public virtual void Dispose() { if (_isDisposed) { @@ -48,7 +48,7 @@ namespace Volo.Abp.BackgroundWorkers //TODO: ??? } - public async Task StartAsync(CancellationToken cancellationToken = default) + public virtual async Task StartAsync(CancellationToken cancellationToken = default) { IsRunning = true; @@ -58,7 +58,7 @@ namespace Volo.Abp.BackgroundWorkers } } - public async Task StopAsync(CancellationToken cancellationToken = default) + public virtual async Task StopAsync(CancellationToken cancellationToken = default) { IsRunning = false; diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IBackgroundWorker.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IBackgroundWorker.cs index 1aec158155..6f514172e7 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IBackgroundWorker.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/IBackgroundWorker.cs @@ -1,11 +1,12 @@ -using Volo.Abp.Threading; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Threading; namespace Volo.Abp.BackgroundWorkers { /// /// Interface for a worker (thread) that runs on background to perform some tasks. /// - public interface IBackgroundWorker : IRunnable + public interface IBackgroundWorker : IRunnable, ISingletonDependency { } diff --git a/framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/DefaultObjectMapper.cs b/framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/DefaultObjectMapper.cs index f76ddad634..b746ab3973 100644 --- a/framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/DefaultObjectMapper.cs +++ b/framework/src/Volo.Abp.ObjectMapping/Volo/Abp/ObjectMapping/DefaultObjectMapper.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.ObjectMapping { //TODO: It can be slow to always check if service is available. Test it and optimize if necessary. - public class DefaultObjectMapper : IObjectMapper, ISingletonDependency + public class DefaultObjectMapper : IObjectMapper, ITransientDependency { private readonly IServiceProvider _serviceProvider; diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/DefaultAsyncQueryableExecuter.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/DefaultAsyncQueryableExecuter.cs index 8018bf7e87..2a5da24a58 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/DefaultAsyncQueryableExecuter.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/DefaultAsyncQueryableExecuter.cs @@ -2,14 +2,18 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using Volo.Abp.DependencyInjection; namespace Volo.Abp.Linq { - public class DefaultAsyncQueryableExecuter : IAsyncQueryableExecuter, ISingletonDependency + public class DefaultAsyncQueryableExecuter : IAsyncQueryableExecuter { public static DefaultAsyncQueryableExecuter Instance { get; } = new DefaultAsyncQueryableExecuter(); + private DefaultAsyncQueryableExecuter() + { + + } + public Task CountAsync(IQueryable queryable) { return Task.FromResult(queryable.Count()); diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/AbpThreadingModule.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/AbpThreadingModule.cs index bf72d3ce44..14bb90834e 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/AbpThreadingModule.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/AbpThreadingModule.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Linq; using Volo.Abp.Modularity; namespace Volo.Abp.Threading @@ -7,6 +8,7 @@ namespace Volo.Abp.Threading { public override void ConfigureServices(ServiceConfigurationContext context) { + context.Services.AddSingleton(DefaultAsyncQueryableExecuter.Instance); context.Services.AddSingleton(NullCancellationTokenProvider.Instance); context.Services.AddSingleton(typeof(IAmbientScopeProvider<>), typeof(AmbientDataContextAmbientScopeProvider<>)); } diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DynamicFileProvider.cs b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DynamicFileProvider.cs index dcf95222ce..a270616e3a 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DynamicFileProvider.cs +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DynamicFileProvider.cs @@ -21,11 +21,11 @@ namespace Volo.Abp.VirtualFileSystem protected ConcurrentDictionary DynamicFiles { get; } - private readonly ConcurrentDictionary _filePathTokenLookup = - new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); + protected ConcurrentDictionary FilePathTokenLookup { get; } public DynamicFileProvider() { + FilePathTokenLookup = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase);; DynamicFiles = new ConcurrentDictionary(); } @@ -53,12 +53,12 @@ namespace Volo.Abp.VirtualFileSystem private IChangeToken GetOrAddChangeToken(string filePath) { - if (!_filePathTokenLookup.TryGetValue(filePath, out var tokenInfo)) + if (!FilePathTokenLookup.TryGetValue(filePath, out var tokenInfo)) { var cancellationTokenSource = new CancellationTokenSource(); var cancellationChangeToken = new CancellationChangeToken(cancellationTokenSource.Token); tokenInfo = new ChangeTokenInfo(cancellationTokenSource, cancellationChangeToken); - tokenInfo = _filePathTokenLookup.GetOrAdd(filePath, tokenInfo); + tokenInfo = FilePathTokenLookup.GetOrAdd(filePath, tokenInfo); } return tokenInfo.ChangeToken; @@ -66,13 +66,13 @@ namespace Volo.Abp.VirtualFileSystem private void ReportChange(string filePath) { - if (_filePathTokenLookup.TryRemove(filePath, out var tokenInfo)) + if (FilePathTokenLookup.TryRemove(filePath, out var tokenInfo)) { tokenInfo.TokenSource.Cancel(); } } - private struct ChangeTokenInfo + protected struct ChangeTokenInfo { public ChangeTokenInfo( CancellationTokenSource tokenSource,