次の方法で共有


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

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

timeout
TimeSpan

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

callback
AsyncCallback

操作が完了した時点で呼び出すメソッド。

state
Object

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

戻り値

非同期操作のステータス。

注釈

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

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

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

適用対象