Уменьшает счетчик блокировки изменения и чтения серверного слоя другими пользователями на единицу, если ранее счетчик был увеличен вызовом метода LockForWrite.
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 SubPython:
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)