このトピックはまだ評価されていません - このトピックを評価する

Semaphore.Release メソッド (Int32)

2013/12/12

指定した回数だけセマフォから出て、前のカウントを返します。

Namespace:  System.Threading
アセンブリ:  System (System.dll 内)
public int Release(
	int releaseCount
)

パラメーター

releaseCount
型: System.Int32
セマフォから出る回数。

戻り値

型: System.Int32
Release メソッドが呼び出される前のセマフォのカウント。
例外条件
ArgumentOutOfRangeException

releaseCount が 1 未満です。

SemaphoreFullException

セマフォのカウントは既に最大値です。

IOException

名前付きセマフォで Win32 エラーが発生しました。

UnauthorizedAccessException

現在のセマフォは名前付きシステム セマフォを表していますが、ユーザーに必要なアクセス権限がありません。

スレッドがセマフォに複数回入った場合、このメソッド オーバーロードにより、1 回の呼び出しでセマフォのカウント全体が復元されます。

Release メソッドから SemaphoreFullException がスローされても、呼び出し側のスレッドに問題があるとは限りません。別のスレッドのプログラミング エラーが原因で、そのスレッドがセマフォに入った回数よりも多い回数だけセマフォから出たという可能性も考えられます。

カウントの最大値が 3 で初期カウントが 0 のセマフォを作成するコード例を次に示します。この例では 5 つのスレッドが開始され、ブロックされてセマフォを待機します。メイン スレッドが Release(Int32) メソッド オーバーロードを使用してセマフォのカウントを最大値まで増加させ、3 つのスレッドがセマフォに入ることができるようにします。各スレッドは、動作をシミュレートするために Thread.Sleep メソッドを使用して 1 秒間待機し、その後 Release() メソッド オーバーロードを呼び出してセマフォを解放します。

セマフォが解放されるたびに、前のセマフォのカウントが表示されます。コンソール メッセージは、セマフォの使用状況を追跡します。出力を読み取りやすくするために、シミュレートされた動作間隔がスレッドごとに若干増加します。

Windows Phone OS

サポート: 8.0

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft. All rights reserved.