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,