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 或 EndBindReclaimedLock 會擲回 InstanceHandleConflictException。 如果其他控制代碼的命令正在進行,在等候這些命令的結果來決定是否能夠回收鎖定時,此作業可能無法完成。
目前的執行個體控制代碼必須繫結至執行個體和鎖定擁有者。 此執行個體不得為完成。 與鎖定擁有者相關聯的鎖定權杖會用來識別鎖定的擁有者。
一旦鎖定繫結至控制代碼之後,它就會在控制代碼的存留期內維持繫結狀態。 此時,無法變更鎖定權杖或執行個體版本。