InstancePersistenceContext.BeginBindReclaimedLock 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始一個非同步操作,將實例上的現有鎖綁定到目前的實例 handle 上。 現有鎖的版本會作為參數傳遞。
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 來嘗試奪回該鎖。 持久性提供者在鎖定成功回收前不得對實例進行變更。 如果沒有其他 handle 綁定到該鎖,則 BeginBindReclaimedLock 操作成功,目前的 handle 也綁定在該鎖上。 否則,BeginBindReclaimedLock 或 EndBindReclaimedLock 會拋出 InstanceHandleConflictException。 若其他帳柄上正在執行指令,則在等待指令結果決定是否能回收鎖時,操作可能無法完成。
目前的實例句柄必須綁定在一個實例和一個鎖擁有者上。 該實例必須不完成。 與鎖具所有者相關的鎖令牌用來識別鎖的擁有者。
一旦鎖綁定到把柄,它就會在把柄的整個壽命內保持綁定狀態。 鎖令牌和實例版本都無法更改。