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 или EndBindReclaimedLock создает исключение InstanceHandleConflictException. Если команды выполняются на других дескрипторах, операция может не завершиться во время ожидания результатов этих команд, чтобы решить, можно ли восстановить блокировку.
Текущий дескриптор экземпляра должен быть привязан к экземпляру и владельцу блокировки. Экземпляр не должен быть завершен. Маркер блокировки, связанный с владельцем блокировки, используется для идентификации владельца блокировки.
После привязки блокировки к дескриптору он остается привязанным к времени существования дескриптора. Ни маркер блокировки, ни версия экземпляра не могут быть изменены.