System.Threading.SemaphoreSlim
namespace System.Threading
{
public class SemaphoreSlim : IDisposable
{
public WaitHandle AvailableWaitHandle { get; }
public int CurrentCount { get; }
public SemaphoreSlim(int initialCount);
public SemaphoreSlim(int initialCount, int maxCount);
public void Dispose();
protected virtual void Dispose(bool disposing);
public int Release();
public int Release(int releaseCount);
public void Wait();
public bool Wait(int millisecondsTimeout);
public bool Wait(int millisecondsTimeout, CancellationToken cancellationToken);
public void Wait(CancellationToken cancellationToken);
public bool Wait(TimeSpan timeout);
public bool Wait(TimeSpan timeout, CancellationToken cancellationToken);
public Task WaitAsync();
public Task<bool> WaitAsync(int millisecondsTimeout);
public Task<bool> WaitAsync(int millisecondsTimeout, CancellationToken cancellationToken);
public Task WaitAsync(CancellationToken cancellationToken);
public Task<bool> WaitAsync(TimeSpan timeout);
public Task<bool> WaitAsync(TimeSpan timeout, CancellationToken cancellationToken);
}
}