Export (0) Print
Expand All
2 out of 2 rated this helpful - Rate this topic

SemaphoreSlim Class

A lightweight alternative to Semaphore that limits the number of threads that can access a resource or pool of resources concurrently.

System::Object
  System.Threading::SemaphoreSlim

Namespace:  System.Threading
Assembly:  mscorlib (in mscorlib.dll)
[ComVisibleAttribute(false)]
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public ref class SemaphoreSlim : IDisposable

The SemaphoreSlim type exposes the following members.

  NameDescription
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsSemaphoreSlim(Int32)Initializes a new instance of the SemaphoreSlim class, specifying the initial number of requests that can be granted concurrently.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsSemaphoreSlim(Int32, Int32)Initializes a new instance of the SemaphoreSlim class, specifying the initial and maximum number of requests that can be granted concurrently.
Top
  NameDescription
Public propertySupported by Portable Class LibrarySupported in .NET for Windows Store appsAvailableWaitHandleReturns a WaitHandle that can be used to wait on the semaphore.
Public propertySupported by Portable Class LibrarySupported in .NET for Windows Store appsCurrentCountGets the number of threads that will be allowed to enter the SemaphoreSlim.
Top
  NameDescription
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsDispose()Releases all resources used by the current instance of the SemaphoreSlim class.
Protected methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsDispose(Boolean)Releases the unmanaged resources used by the SemaphoreSlim, and optionally releases the managed resources.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsRelease()Exits the SemaphoreSlim once.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsRelease(Int32)Exits the SemaphoreSlim a specified number of times.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsWait()Blocks the current thread until it can enter the SemaphoreSlim.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsWait(CancellationToken)Blocks the current thread until it can enter the SemaphoreSlim, while observing a CancellationToken.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsWait(Int32)Blocks the current thread until it can enter the SemaphoreSlim, using a 32-bit signed integer that specifies the timeout.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsWait(TimeSpan)Blocks the current thread until it can enter the SemaphoreSlim, using a TimeSpan to specify the timeout.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsWait(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.
Public methodSupported by Portable Class LibrarySupported in .NET for Windows Store appsWait(TimeSpan, CancellationToken)Blocks the current thread until it can enter the SemaphoreSlim, using a TimeSpan that specifies the timeout, while observing a CancellationToken.
Public methodSupported in .NET for Windows Store appsWaitAsync()Asynchronously waits to enter the SemaphoreSlim.
Public methodSupported in .NET for Windows Store appsWaitAsync(CancellationToken)Asynchronously waits to enter the SemaphoreSlim, while observing a CancellationToken.
Public methodSupported in .NET for Windows Store appsWaitAsync(Int32)Asynchronously waits to enter the SemaphoreSlim, using a 32-bit signed integer to measure the time interval.
Public methodSupported in .NET for Windows Store appsWaitAsync(TimeSpan)Asynchronously waits to enter the SemaphoreSlim, using a TimeSpan to measure the time interval.
Public methodSupported in .NET for Windows Store appsWaitAsync(Int32, CancellationToken)Asynchronously waits to enter the SemaphoreSlim, using a 32-bit signed integer to measure the time interval, while observing a CancellationToken.
Public methodSupported in .NET for Windows Store appsWaitAsync(TimeSpan, CancellationToken)Asynchronously waits to enter the SemaphoreSlim, using a TimeSpan to measure the time interval, while observing a CancellationToken.
Top

The SemaphoreSlim provides a lightweight semaphore class that doesn't use Windows kernel semaphores.

NoteNote

The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: Synchronization | ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

The following example shows how to use a SemaphoreSlim:

No code example is currently available or this language may not be supported.

.NET Framework

Supported in: 4.5.1, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

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.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.