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

Semaphore.Release 方法 (Int32)

2013/12/13

以指定的次数退出信号量并返回前一个计数。

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

public int Release(
	int releaseCount
)

参数

releaseCount
类型: System.Int32
退出信号量的次数。

返回值

类型: System.Int32
调用 Release 方法前信号量的计数。

异常条件
ArgumentOutOfRangeException

releaseCount 小于 1。

SemaphoreFullException

信号量计数已是最大值。

IOException

发生已命名信号量的 Win32 错误。

UnauthorizedAccessException

当前信号量表示一个已命名的系统信号量,但用户不具备必要的访问权限。

如果线程多次进入信号量,此方法重载允许通过一个调用还原整个信号量计数。

如果 Release 方法引发了 SemaphoreFullException,不一定表示调用线程有问题。另一个线程中的编程错误可能导致该线程退出信号量的次数超过它进入的次数。

下面的代码示例创建一个最大计数为 3、初始计数为 0 的信号量。此示例启动五个线程,这些线程都将阻止等待该信号量。主线程使用 Release(Int32) 方法重载,以便将信号量计数增加为其最大值,从而允许三个线程进入该信号量。每个线程都使用 Thread.Sleep 方法等待一秒钟以便模拟工作,然后调用 Release() 方法重载以释放信号量。

每次释放信号量时,都显示前一个信号量计数。控制台消息对信号量的使用进行跟踪。每个线程的模拟工作间隔都稍有增加,以使输出更为易读。

Windows Phone OS

受以下版本支持: 8.0

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2015 Microsoft