diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj
index fd9b992133..0abb5e699c 100644
--- a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj
@@ -16,6 +16,7 @@
+
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs
index 4c4abd3f32..853752cb6c 100644
--- a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs
@@ -1,9 +1,11 @@
using Volo.Abp.Modularity;
+using Volo.Abp.Threading;
namespace Volo.Abp.DistributedLocking;
[DependsOn(
- typeof(AbpDistributedLockingAbstractionsModule)
+ typeof(AbpDistributedLockingAbstractionsModule),
+ typeof(AbpThreadingModule)
)]
public class AbpDistributedLockingModule : AbpModule
{
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs
index e78f1934c1..769303a348 100644
--- a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs
@@ -3,6 +3,7 @@ using System.Threading;
using System.Threading.Tasks;
using Medallion.Threading;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.Threading;
namespace Volo.Abp.DistributedLocking;
@@ -10,10 +11,14 @@ namespace Volo.Abp.DistributedLocking;
public class MedallionAbpDistributedLock : IAbpDistributedLock, ITransientDependency
{
protected IDistributedLockProvider DistributedLockProvider { get; }
+ protected ICancellationTokenProvider CancellationTokenProvider { get; }
- public MedallionAbpDistributedLock(IDistributedLockProvider distributedLockProvider)
+ public MedallionAbpDistributedLock(
+ IDistributedLockProvider distributedLockProvider,
+ ICancellationTokenProvider cancellationTokenProvider)
{
DistributedLockProvider = distributedLockProvider;
+ CancellationTokenProvider = cancellationTokenProvider;
}
public async Task TryAcquireAsync(
@@ -23,7 +28,14 @@ public class MedallionAbpDistributedLock : IAbpDistributedLock, ITransientDepend
{
Check.NotNullOrWhiteSpace(name, nameof(name));
- var handle = await DistributedLockProvider.TryAcquireLockAsync(name, timeout, cancellationToken);
+ CancellationTokenProvider.FallbackToProvider(cancellationToken);
+
+ var handle = await DistributedLockProvider.TryAcquireLockAsync(
+ name,
+ timeout,
+ CancellationTokenProvider.FallbackToProvider(cancellationToken)
+ );
+
if (handle == null)
{
return null;
diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/NullCancellationTokenProvider.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/NullCancellationTokenProvider.cs
index 8f8113ba0d..2da06632cd 100644
--- a/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/NullCancellationTokenProvider.cs
+++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Threading/NullCancellationTokenProvider.cs
@@ -4,7 +4,7 @@ namespace Volo.Abp.Threading;
public class NullCancellationTokenProvider : CancellationTokenProviderBase
{
- public static NullCancellationTokenProvider Instance { get; } = new NullCancellationTokenProvider();
+ public static NullCancellationTokenProvider Instance { get; } = new();
public override CancellationToken Token => OverrideValue?.CancellationToken ?? CancellationToken.None;