SemaphoreSlim Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
A lightweight alternative to Semaphore that limits the number of threads that can access a resource or pool of resources concurrently.
Inheritance Hierarchy
System..::.Object
System.Threading..::.SemaphoreSlim
Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)
Syntax
Public Class SemaphoreSlim _
Implements IDisposable
public class SemaphoreSlim : IDisposable
The SemaphoreSlim type exposes the following members.
Constructors
Name | Description | |
---|---|---|
SemaphoreSlim(Int32) | Initializes a new instance of the SemaphoreSlim class, specifying the initial number of requests that can be granted concurrently. | |
SemaphoreSlim(Int32, Int32) | Initializes a new instance of the SemaphoreSlim class, specifying the initial and maximum number of requests that can be granted concurrently. |
Top
Properties
Name | Description | |
---|---|---|
AvailableWaitHandle | Returns a WaitHandle that can be used to wait on the semaphore. | |
CurrentCount | Gets the number of threads that will be allowed to enter the SemaphoreSlim. |
Top
Methods
Name | Description | |
---|---|---|
Dispose()()() | Releases all resources used by the current instance of the SemaphoreSlim class. | |
Dispose(Boolean) | Releases the unmanaged resources used by the ManualResetEventSlim, and optionally releases the managed resources. | |
Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.) | |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
Release()()() | Exits the SemaphoreSlim once. | |
Release(Int32) | Exits the SemaphoreSlim a specified number of times. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
Wait()()() | Blocks the current thread until it can enter the SemaphoreSlim. | |
Wait(CancellationToken) | Blocks the current thread until it can enter the SemaphoreSlim, while observing a CancellationToken. | |
Wait(Int32) | Blocks the current thread until it can enter the SemaphoreSlim, using a 32-bit signed integer that specifies the timeout. | |
Wait(TimeSpan) | Blocks the current thread until it can enter the SemaphoreSlim, using a TimeSpan to specify the timeout. | |
Wait(Int32, CancellationToken) | Blocks the current thread until it can enter the SemaphoreSlim, using a 32-bit signed integer that specifies the timeout, while observing a CancellationToken. | |
Wait(TimeSpan, CancellationToken) | Blocks the current thread until it can enter the SemaphoreSlim, using a TimeSpan that specifies the timeout, while observing a CancellationToken. | |
WaitAsync()()() | Asynchronously waits to enter the SemaphoreSlim. | |
WaitAsync(CancellationToken) | Asynchronously waits to enter the SemaphoreSlim, while observing a CancellationToken. | |
WaitAsync(Int32) | Asynchronously waits to enter the SemaphoreSlim, using a 32-bit signed integer to measure the time interval. | |
WaitAsync(TimeSpan) | Asynchronously waits to enter the SemaphoreSlim, using a TimeSpan to measure the time interval. | |
WaitAsync(Int32, CancellationToken) | Asynchronously waits to enter the SemaphoreSlim, using a 32-bit signed integer to measure the time interval, while observing a CancellationToken. | |
WaitAsync(TimeSpan, CancellationToken) | Asynchronously waits to enter the SemaphoreSlim, using a TimeSpan to measure the time interval, while observing a CancellationToken. |
Top
Remarks
The SemaphoreSlim provides a lightweight semaphore class that doesn't use Windows kernel semaphores.
Examples
The following example shows how to use a SemaphoreSlim:
Version Information
Windows Phone OS
Supported in: 8.1, 8.0
Thread Safety
All public and protected members of SemaphoreSlim are thread-safe and may be used concurrently from multiple threads, with the exception of Dispose, which must only be used when all other operations on the SemaphoreSlim have completed.