LockRecursionPolicy Enumeration


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Specifies whether a lock can be entered multiple times by the same thread.

Namespace:   System.Threading
Assembly:  System.Core (in System.Core.dll)

public enum class LockRecursionPolicy

Member nameDescription

If a thread tries to enter a lock recursively, an exception is thrown. Some classes may allow certain recursions when this setting is in effect.


A thread can enter a lock recursively. Some classes may restrict this capability.

The default recursion policy depends on the type of lock. For the default policy and the precise behavior of lock recursion for any given lock type, see the documentation for the type. For example, the ReaderWriterLockSlim class does not allow a thread to enter the lock in write mode if it already entered the lock in read mode, regardless of the lock policy setting, in order to reduce the chance of deadlocks.

Currently only one lock uses this enumeration:

The following example shows two exception scenarios, one that depends on the LockRecursionPolicy setting and one that does not.

In the first scenario, the thread enters the lock in read mode and then tries to enter read mode recursively. If the ReaderWriterLockSlim is created by using the default constructor, which sets recursion policy to NoRecursion, an exception is thrown. If SupportsRecursion is used to create the ReaderWriterLockSlim, no exception is thrown.

In the second scenario, the thread enters the lock in read mode and then tries to enter the lock in write mode. LockRecursionException is thrown regardless of the lock recursion policy.

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

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top