Files
Toolkit2/Toolkit.Foundation/AsyncLock.cs
T
TheXamlGuy bc55c4649b tidy
2024-04-26 23:05:36 +01:00

23 lines
488 B
C#

using System.Runtime.CompilerServices;
namespace Toolkit.Foundation;
public class AsyncLock(int initial = 1,
int maximum = 1) :
IDisposable
{
private readonly SemaphoreSlim semaphore = new(initial, maximum);
public void Dispose()
{
semaphore.Release();
}
public TaskAwaiter<AsyncLock> GetAwaiter() => LockAsync().GetAwaiter();
private async Task<AsyncLock> LockAsync()
{
await semaphore.WaitAsync();
return this;
}
}