From 9d17d066058feace550bca5d26b6225d8b40965a Mon Sep 17 00:00:00 2001 From: EventHorizon <772552754@qq.com> Date: Fri, 14 Nov 2025 08:18:37 +0800 Subject: [PATCH 1/3] Update CrossPlatformProcessLock.cs --- src/MappedFileQueues/CrossPlatformProcessLock.cs | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/MappedFileQueues/CrossPlatformProcessLock.cs b/src/MappedFileQueues/CrossPlatformProcessLock.cs index d185faa..87340d6 100644 --- a/src/MappedFileQueues/CrossPlatformProcessLock.cs +++ b/src/MappedFileQueues/CrossPlatformProcessLock.cs @@ -7,7 +7,7 @@ namespace MappedFileQueues; /// A cross-platform process lock implementation. Only Windows and Linux are supported. /// On Windows, a named mutex is used. On Linux, a file lock is used. On other platforms, a no-op lock is used. /// -internal sealed class CrossPlatformProcessLock : IDisposable +internal sealed class CrossPlatformProcessLock { private readonly IProcessLock _lock; @@ -39,11 +39,9 @@ public CrossPlatformProcessLock(string name, string storePath) public void Acquire() => _lock.Acquire(); public void Release() => _lock.Release(); - public void Dispose() => _lock.Dispose(); - #region Process Lock Interface - private interface IProcessLock : IDisposable + private interface IProcessLock { void Acquire(); void Release(); @@ -71,8 +69,6 @@ public void Release() _mutex?.ReleaseMutex(); _mutex?.Dispose(); } - - public void Dispose() => Release(); } #endregion @@ -107,8 +103,6 @@ public void Release() _lockFileStream?.Unlock(0, 0); _lockFileStream?.Dispose(); } - - public void Dispose() => Release(); } #endregion @@ -124,10 +118,6 @@ public void Acquire() public void Release() { } - - public void Dispose() - { - } } #endregion From a4ae7f97a046c787278e5bd98b01f3166f64a17a Mon Sep 17 00:00:00 2001 From: EventHorizon <772552754@qq.com> Date: Fri, 14 Nov 2025 08:19:35 +0800 Subject: [PATCH 2/3] Update MappedFileQueueT.cs --- src/MappedFileQueues/MappedFileQueueT.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MappedFileQueues/MappedFileQueueT.cs b/src/MappedFileQueues/MappedFileQueueT.cs index fa609cb..d1d1bf5 100644 --- a/src/MappedFileQueues/MappedFileQueueT.cs +++ b/src/MappedFileQueues/MappedFileQueueT.cs @@ -51,12 +51,12 @@ public void Dispose() private void RecoverProducerOffsetIfNeeded() { var lockName = "recovery_lock"; - using var processLock = new CrossPlatformProcessLock(lockName, _options.StorePath); - - processLock.Acquire(); + var processLock = new CrossPlatformProcessLock(lockName, _options.StorePath); try { + processLock.Acquire(); + var consumer = Consumer; if (consumer.NextMessageAvailable()) From 16b3b9c3fd415e71497b1023767618ac42d3675e Mon Sep 17 00:00:00 2001 From: EventHorizon <772552754@qq.com> Date: Fri, 14 Nov 2025 08:47:32 +0800 Subject: [PATCH 3/3] Update CrossPlatformProcessLock.cs --- src/MappedFileQueues/CrossPlatformProcessLock.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/MappedFileQueues/CrossPlatformProcessLock.cs b/src/MappedFileQueues/CrossPlatformProcessLock.cs index 87340d6..384bcb8 100644 --- a/src/MappedFileQueues/CrossPlatformProcessLock.cs +++ b/src/MappedFileQueues/CrossPlatformProcessLock.cs @@ -1,3 +1,5 @@ +#pragma warning disable CA1416 // Ignore: Validate platform compatibility + using System.Runtime.InteropServices; using System.Security.Cryptography;