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:

NomeTipoDescriçãoValor PadrãoObrigatório
cName CaracterNome do semáforo a ser criado.X
lEmpresa LogicalSe verdadeiro (.T.), o controle será feito por filial, considerando a filial (considera empresa e filial caso o layout possua).F.
lFilial LogicalSe 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

Administrador

View all posts

Adicionar comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *