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。 如果命令在其他句柄上正在进行,则在等待这些命令的结果决定是否可以回收锁时,该操作可能无法完成。

当前实例句柄必须绑定到实例和锁所有者。 实例不能完成。 与锁所有者关联的锁令牌用于标识锁的所有者。

锁定绑定到句柄后,它将在句柄的生存期内保持绑定状态。 锁令牌和实例版本都不能更改。

适用于