Esse recurso trava uma função como semáforo, essa função utilizada para criar um semáforo no servidor de licenças ou em disco.
Exemplo:
LockByName("NOME_SEMAFORO",.T.,.F.)
Sintaxe:
LockByName( < cName >, [ lEmpresa ], [ lFilial ] ) → lCreated
Parâmetros:
Nome | Tipo | Descrição | Valor Padrão | Obrigatório |
cName | Caracter | Nome do semáforo a ser criado. | X | |
lEmpresa | Logical | Se verdadeiro (.T.), o controle será feito por filial, considerando a filial (considera empresa e filial caso o layout possua) | .F. | |
lFilial | Logical | Se verdadeiro (.T.), o controle será feito por grupo de empresa. | .T. |
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("NOME_FUNCAO", .F., .F.) //Lock no ambiente inteiro, pois não considera empresa nem filial
//Faço meu processamento
UnlockByName("ffuncao", .F., .F.) //Efetuo a liberação do lock após o término do processamento
Else
MsgInfo("Rotina já em execução", "Framework")
EndIf
Adicionar comentário