此主题尚未评级 - 评价此主题

LockRecursionPolicy 枚举

2013/12/13

指定同一个线程是否可以多次进入一个锁定状态。

Namespace:  System.Threading
程序集:  System.Core(位于 System.Core.dll 中)
public enum LockRecursionPolicy
成员名称说明
NoRecursion如果线程尝试以递归方式进入锁定状态,将引发异常。某些类可能会在此设置生效时允许使用特定的递归方式。
SupportsRecursion线程可以采用递归方式进入锁定状态。某些类可能会限制此功能。

默认的递归策略取决于锁定的类型。对于默认的策略和任何给定锁定类型的锁定递归的确切行为,请参见相应类型的文档。例如,如果线程已进入读取模式锁定状态,则 ReaderWriterLockSlim 类不允许它进入写模式锁定状态(无论锁定策略如何设置)以减少死锁的机会。

当前只有一个锁定状态使用此枚举:

下面的示例演示两种异常情况,一种取决于 LockRecursionPolicy 设置,另一种则与此设置无关。

在第一种情况下,线程进入读取模式锁定状态后尝试以递归方式进入读取模式。如果 ReaderWriterLockSlim 是通过使用默认构造函数创建的,并将递归策略设置为 NoRecursion,将引发异常。如果使用 SupportsRecursion 创建 ReaderWriterLockSlim,则不会引发异常。

在第二种情况下,线程在进入读取模式的锁定状态后尝试进入写入模式的锁定状态。不论锁定递归策略如何,都将引发 LockRecursionException

Windows Phone OS

受以下版本支持: 8.0

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft. 版权所有。