SemaphoreFullException 类
2013/3/11
对计数已达到最大值的信号量调用 Semaphore.Release 方法时引发的异常。
Namespace:
System.Threading
程序集: mscorlib(位于 mscorlib.dll 中)
SemaphoreFullException 类型公开以下成员。
| 名称 | 说明 | |
|---|---|---|
![]() | SemaphoreFullException() | 使用默认值初始化 SemaphoreFullException 类的新实例。 |
![]() | SemaphoreFullException(String) | 使用指定错误消息初始化 SemaphoreFullException 类的新实例。 |
![]() | SemaphoreFullException(String, Exception) | 使用指定错误消息和对作为此异常原因的内部异常的引用来初始化 SemaphoreFullException 类的新实例。 |
| 名称 | 说明 | |
|---|---|---|
![]() | 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 继承。) |
信号量的计数在每次线程进入信号量时减小,在线程释放信号量时增加。当计数为零时,后面的请求将被阻塞,直到有其他线程释放信号量。当所有的线程都已释放信号量时,计数达到创建信号量时所指定的最大值。如果编程错误导致线程在此时调用 Semaphore.Release 方法,将引发 SemaphoreFullException。
注意: |
|---|
Semaphore 类对 WaitHandle.WaitOne 和 Semaphore.Release 方法调用不强制线程标识。调用过 WaitOne 的线程不需要调用 Release。 |
SemaphoreFullException 不一定表示发生异常的代码有问题。请考虑下列情形:线程 A 和线程 B 进入一个最大计数值为 2 的信号量。线程 B 的编程错误导致其调用两次 Release,从而使该信号量的计数已满。因此,当线程 A 最终调用 Release 时,引发了 SemaphoreFullException。
有关 SemaphoreFullException 类的实例的初始属性值列表,请参见 SemaphoreFullException() 构造函数。



注意: