diff --git a/src/MappedFileQueues/CrossPlatformProcessLock.cs b/src/MappedFileQueues/CrossPlatformProcessLock.cs index d185faa..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; @@ -7,7 +9,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 +41,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 +71,6 @@ public void Release() _mutex?.ReleaseMutex(); _mutex?.Dispose(); } - - public void Dispose() => Release(); } #endregion @@ -107,8 +105,6 @@ public void Release() _lockFileStream?.Unlock(0, 0); _lockFileStream?.Dispose(); } - - public void Dispose() => Release(); } #endregion @@ -124,10 +120,6 @@ public void Acquire() public void Release() { } - - public void Dispose() - { - } } #endregion 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())