UnlockForWrite method (Layer)

Уменьшает счетчик блокировки изменения и чтения серверного слоя другими пользователями на единицу, если ранее счетчик был увеличен вызовом метода LockForWrite.

Применяется к:

Layer

Синтаксис:

Visual Basic:

Function UnlockForWrite() As Long

Метод возвращает текущее значение счетчика блокировки. Слой будет доступен для редактирования и чтения другими пользователями только тогда, когда метод вернет 0.

Описание:

Вложенные блокировки снимаются по одной: метод вызывается столько же раз, сколько был вызван LockForWrite.

На локальном слое (IsRemote = False) счетчик не ведется: два вызова LockForWrite подряд возвращают 1 и 1, а оба UnlockForWrite - 0. Вызов без блокировки тоже возвращает 0 и ошибки не вызывает.

Пример:

Пример ставит две вложенные блокировки и снимает их по одной, показывая счетчик на каждом шаге.

Visual Basic:

Sub Layer_UnlockForWrite
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Закрываем слой от других пользователей на время правки
n1 = L.LockForWrite(0, 0)
'Вложенная блокировка, например из другой процедуры
n2 = L.LockForWrite(0, 0)
'Снимаем блокировки по одной
m1 = L.UnlockForWrite
m2 = L.UnlockForWrite
S = "Счетчик после блокировок: " & n1 & ", " & n2
S = S & vbCrLf & "счетчик после снятий: " & m1 & ", " & m2
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_UnlockForWrite():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Закрываем слой от других пользователей на время правки
    n1 = L.LockForWrite(0, 0)
    # Вложенная блокировка, например из другой процедуры
    n2 = L.LockForWrite(0, 0)
    # Снимаем блокировки по одной
    m1 = L.UnlockForWrite()
    m2 = L.UnlockForWrite()
    print("Счетчик после блокировок:", n1, ",", n2)
    print("счетчик после снятий:", m1, ",", m2)