情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

SemaphoreFullException クラス

2013/12/12

カウントが既に最大値であるセマフォに対して Semaphore.Release メソッドが呼び出された場合にスローされる例外。

System.Object
  System.Exception
    System.SystemException
      System.Threading.SemaphoreFullException

Namespace:  System.Threading
アセンブリ:  mscorlib (mscorlib.dll 内)

public class SemaphoreFullException : SystemException

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 から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetBaseException派生クラスでオーバーライドされた場合、それ以後に発生する 1 つ以上の例外の主要な原因である Exception を返します。 (Exception から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスのランタイム型を取得します。 (Exception から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドToString現在の例外の文字列形式を作成して返します。 (Exception から継承されます。)
このページのトップへ

セマフォのカウントは、1 つのスレッドがセマフォに入るたびにデクリメントされ、1 つのスレッドがセマフォを解放するたびにインクリメントされます。カウントが 0 になると、それ以降の要求は他のスレッドがセマフォを解放するまでブロックされます。すべてのスレッドがセマフォを解放すると、カウントはセマフォの作成時に設定された最大値になります。プログラミング エラーによってこの時点でスレッドが Semaphore.Release メソッドを呼び出した場合、SemaphoreFullException がスローされます。

メモメモ:

Semaphore クラスは、WaitHandle.WaitOne および Semaphore.Release メソッドの呼び出しにスレッドの ID を適用しません。WaitOne を呼び出したスレッドと Release を呼び出すメソッドが同じである必要はありません。

SemaphoreFullException は、この例外が発生したコードに問題があることを示すとは限りません。次に例を示します。スレッド A とスレッド B が、カウントの最大値が 2 のセマフォに入ります。スレッド B がプログラミング エラーによって Release を 2 回呼び出した場合、セマフォのカウントは最大値になります。その結果、スレッド A が最終的に Release を呼び出すと、SemaphoreFullException がスローされます。

SemaphoreFullException クラスのインスタンスの初期プロパティ値の一覧については、SemaphoreFullException() コンストラクターのトピックを参照してください。

1 つのスレッドにプログラミング エラーがあるために、別のスレッドに対して SemaphoreFullException がスローされるコード例を次に示します。この例では、2 つのスレッドがセマフォに入ります。1 番目のスレッドがタスクを実行している間に、2 番目のスレッドがセマフォを 2 回解放します。1 番目のスレッドがタスクを完了してセマフォを解放しようとすると、セマフォのカウントが既に最大値になっているために、例外がスローされます。

Windows Phone OS

サポート: 8.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示: