InstancePersistenceContext.BeginBindReclaimedLock 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
开始异步操作以将实例上的现有锁绑定到当前实例句柄。 现有锁的版本将作为参数传递。
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。 如果正在对其他句柄执行命令,则该操作要等待那些命令的结果以确定是否可回收锁,因而无法完成。
当前实例句柄必须绑定到一个实例和一个锁所有者。 该实例不得已完成。 与锁的所有者关联的锁定标记用于标识锁的所有者。
一旦一个锁绑定到一个句柄,它就会在该句柄的整个生存期中一直与之绑定。 锁定标记和实例版本都不可更改。