エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

LockRecursionPolicy 列挙体

2013/12/12

同じスレッドが複数回ロックに入れるかどうかを指定します。

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

public enum LockRecursionPolicy

メンバー名説明
NoRecursionスレッドが、再帰的にロックに入ろうとすると、例外がスローされます。クラスによっては、この設定が適用されている場合に、特定の再帰が認められることがあります。
SupportsRecursionスレッドが再帰的にロックに入ることができます。クラスによっては、この機能が制限されていることがあります。

既定の再帰ポリシーはロックの種類によって異なります。ロックの種類ごとの既定のポリシーと再帰的ロックの動作の詳細については、その種類のロックのドキュメントを参照してください。たとえば、ReaderWriterLockSlim クラスの場合、ロック ポリシーの設定にかかわらず、既に読み取りモードでロックに入っているスレッドが書き込みモードでロックに入ることは認められません。デッドロックの可能性を抑えるためです。

現時点では、この列挙体を使用するロックは 1 つだけです。

2 種類の例外のシナリオを次の例に示します。1 つは LockRecursionPolicy の設定値に関係する例外、もう 1 つは無関係な例外です。

最初のシナリオでは、スレッドは読み取りモードでロックに入った後で、再帰的に読み取りモードに入ろうとします。既定のコンストラクターで ReaderWriterLockSlim を作成した場合は、再帰ポリシーは NoRecursion に設定されており、例外がスローされます。SupportsRecursion を使用して ReaderWriterLockSlim を作成した場合は、例外はスローされません。

2 番目のシナリオでは、スレッドは、読み取りモードでロックに入った後で、書き込みモードでロックに入ろうとします。ロック再帰ポリシーに関係なく、LockRecursionException がスローされます。

Windows Phone OS

サポート: 8.0

表示:
© 2015 Microsoft