Descrição:

Função utilizada para criar um semáforo no servidor de licenças ou em disco.


Sintaxe:

LockByName( < cName >, [ lEmpresa ], [ lFilial ] ) → lCreated


Retorno:

lCreated → Logical, Retorno verdadeiro (.T.) se conseguir criar o semáforo com sucesso, caso não consiga criar ou já exista o retorno será falso (.F.)


Parâmetros:

NomeTipoDescriçãoDefaultObrigatório
cNameCaracterNome do semáforo a ser criado.
X
lEmpresaLogicalSe verdadeiro (.T.), o controle será feito por grupo de empresa..T.
lFilialLogicalSe verdadeiro (.T.), o controle será feito por filial, considerando a filial (considera empresa e filial caso o layout possua).F.


Observações:

A LockByName trabalha em conjunto com a chave SpecialKey, que pode ser informada no arquivo de configuração do servidor no ambiente corrente, para distinguir os diversos ambientes (produção e homologação).

Em versões que não possuem Servidor de Licenças o semáforo é criado automaticamente em disco.


Exemplo:

Ini
[EnvironmentX]
SourcePath=D:\Protheus\APO\
RootPath=D:\Protheus\
StartPath=\System\
RpoDb=TOP
RpoLanguage=Multi
RpoVersion=120
LocalFiles=ctree
SpecialKey=EnvironmentX
Código
If LockByName("Xisto", .F., .F.) //Lock no ambiente inteiro, pois não considera empresa nem filial
    //Faço meu processamento
    UnlockByName("Xisto", .F., .F.) //Efetuo a liberação do lock após o término do processamento
Else
    MsgInfo("Rotina já em execução", "Framework")
EndIf


  • Sem rótulos