导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

LockRecursionException 类

2013/12/13

当进入锁定状态的递归与此锁定的递归策略不兼容时引发的异常。

System.Object
  System.Exception
    System.Threading.LockRecursionException

Namespace:  System.Threading
程序集:  mscorlib(位于 mscorlib.dll 中)

public class LockRecursionException : Exception

LockRecursionException 类型公开以下成员。

  名称说明
公共方法LockRecursionException()使用由系统提供的用来描述错误的消息初始化 LockRecursionException 类的新实例。
公共方法LockRecursionException(String)使用指定的错误描述消息初始化 LockRecursionException 类的新实例。
公共方法LockRecursionException(String, Exception)使用指定错误消息和对作为此异常原因的内部异常的引用来初始化 LockRecursionException 类的新实例。
返回顶部

  名称说明
公共属性Data获取一个提供用户定义的其他异常信息的键/值对的集合。 (从 Exception 继承。)
公共属性HelpLink获取或设置指向此异常所关联帮助文件的链接。 (从 Exception 继承。)
公共属性HResult获取或设置 HRESULT(一个分配给特定异常的编码数字值)。 (从 Exception 继承。)
公共属性InnerException获取导致当前异常的 Exception 实例。 (从 Exception 继承。)
公共属性Message获取描述当前异常的消息。 (从 Exception 继承。)
公共属性Source获取或设置导致错误的应用程序或对象的名称。 (从 Exception 继承。)
公共属性StackTrace获取在引发当前异常时调用堆栈上帧的字符串表示形式。 (从 Exception 继承。)
返回顶部

  名称说明
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetBaseException当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根源。 (从 Exception 继承。)
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetType获取当前实例的运行时类型。 (从 Exception 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法ToString创建并返回当前异常的字符串表示形式。 (从 Exception 继承。)
返回顶部

引发 LockRecursionException 的原因很多,其中包括:

  • 如果线程尝试以递归方式进入 ReaderWriterLockSlim 的实例,但此实例不支持递归。

  • 如果线程初始在读取模式进入锁定状态,而该线程尝试在写模式或可升级模式进入 ReaderWriterLockSlim 实例。这表示潜在的死锁,因此是不允许的。

  • 如果允许添加一个级别的递归将会超过用于跟踪递归的内部存储计数器的最大值。此限制数值很大,因此任何情况下应用程序都不应遇到此情况。

下面的示例演示使用 ReaderWriterLockSlim 类时导致 LockRecursionException 的两个原因。程序使用默认构造函数创建 ReaderWriterLockSlim,它不允许使用递归。然后,程序启动了一个在读取模式进入锁定状态的线程。此线程尝试在读取模式以递归方式进入锁定状态,并捕获产生的异常。最后,线程尝试进入写模式,这可能会造成死锁。线程捕获产生的异常。

Windows Phone OS

受以下版本支持: 8.0

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2014 Microsoft