UnlockForRead method (Layer)

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

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

Layer

Синтаксис:

Visual Basic:

Function UnlockForRead() As Long

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

Описание:

Метод вызывается столько же раз, сколько был вызван LockForRead: пока счетчик не дошел до нуля, блокировка держится.

На локальном слое (IsRemote = False) счетчик не ведется: LockForRead и первый, и второй раз возвращает 1, а UnlockForRead каждый раз возвращает 0. Лишний вызов, сделанный без блокировки, ошибки не вызывает и возвращает тот же 0.

Пример:

Пример читает данные слоя под блокировкой и снимает ее.

Visual Basic:

Sub Layer_UnlockForRead
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Закрываем слой от изменений другими пользователями
n = L.LockForRead(0, 0)
'Под блокировкой читаем данные слоя
Cnt = L.ElementKeys.Count
'Снимаем блокировку столько раз, сколько ставили
m = L.UnlockForRead
S = "Счетчик после блокировки: " & n
S = S & vbCrLf & "объектов в слое: " & Cnt
S = S & vbCrLf & "счетчик после снятия: " & m
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_UnlockForRead():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Закрываем слой от изменений другими пользователями
    n = L.LockForRead(0, 0)
    # Под блокировкой читаем данные слоя
    cnt = L.ElementKeys.Count
    # Снимаем блокировку столько раз, сколько ставили
    m = L.UnlockForRead()
    print("Счетчик после блокировки:", n)
    print("объектов в слое:", cnt)
    print("счетчик после снятия:", m)