InstancePersistenceContext.BeginBindReclaimedLock 方法

定義

開始一個非同步操作,將實例上的現有鎖綁定到目前的實例 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。 若其他帳柄上正在執行指令,則在等待指令結果決定是否能回收鎖時,操作可能無法完成。

目前的實例句柄必須綁定在一個實例和一個鎖擁有者上。 該實例必須不完成。 與鎖具所有者相關的鎖令牌用來識別鎖的擁有者。

一旦鎖綁定到把柄,它就會在把柄的整個壽命內保持綁定狀態。 鎖令牌和實例版本都無法更改。

適用於