InstancePersistenceContext.BeginBindReclaimedLock メソッド

定義

インスタンスの既存のロックを現在のインスタンス ハンドルにバインドする非同期操作を開始します。 既存のロックのバージョンがパラメーターとして渡されます。

public:
 IAsyncResult ^ BeginBindReclaimedLock(long instanceVersion, TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginBindReclaimedLock(long instanceVersion, TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginBindReclaimedLock : int64 * TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginBindReclaimedLock (instanceVersion As Long, timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

instanceVersion
Int64

インスタンスに保持されているロックのバージョン。永続化プロバイダーがロック バージョンを実装していない場合は 0。

timeout
TimeSpan

非同期操作のタイムアウト期間。

callback
AsyncCallback

操作が完了したときに呼び出されるメソッド。

state
Object

非同期操作に関連付けられている状態情報。

返品

非同期操作の状態。

注釈

ロックを取得しようとすると、永続化プロバイダーは、現在のインスタンスが現在のストアで既にロックされていることを判断できます。 ロック トークンが現在のハンドルのロック トークンと一致する場合、永続化プロバイダーは、そのバージョンを調べて BeginBindReclaimedLock に渡すことで、ロックの再利用を試みることができます。 永続化プロバイダーは、ロックが正常に再利用されるまで、インスタンスに変更を加えてはなりません。 他のハンドルがロックにバインドされていない場合、BeginBindReclaimedLock 操作は成功し、現在のハンドルはロックにバインドされます。 それ以外の場合、BeginBindReclaimedLock または EndBindReclaimedLock は InstanceHandleConflictException をスローします。 他のハンドルでコマンドが進行中の場合、これらのコマンドの結果がロックを再利用できるかどうかを判断するのを待っている間、操作が完了しない可能性があります。

現在のインスタンス ハンドルは、インスタンスとロック所有者にバインドする必要があります。 インスタンスを完了することはできません。 ロック所有者に関連付けられているロック トークンは、ロックの所有者を識別するために使用されます。

ロックがハンドルにバインドされると、ハンドルの有効期間中はバインドされたままになります。 ロック トークンもインスタンス バージョンも変更できません。

適用対象