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 或 BeginBindReclaimedLock 将引发 InstanceHandleConflictException。 如果正在对其他句柄执行命令,则该操作要等待那些命令的结果以确定是否可回收锁,因而无法完成。

当前实例句柄必须绑定到一个实例和一个锁所有者。 该实例不得已完成。 与锁的所有者关联的锁定标记用于标识锁的所有者。

一旦一个锁绑定到一个句柄,它就会在该句柄的整个生存期中一直与之绑定。 锁定标记和实例版本都不可更改。

适用于