<PackageReference Include="NETStandard.Library" Version="2.0.0-preview1-25301-01" />

System.Threading.SemaphoreSlim

public class SemaphoreSlim : IDisposable

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)