Olá,
A única função existente para abrir o ambiente é a RpcSetEnv
.
Porém fechar e abrir o ambiente, gera uma queda de performance.
Sendo uma thread de interface, os problemas são maiores, pois por questões de performance, existem inúmeros caches gerados com base no grupo aberto ao inicializar o Protheus, chamar as funções RpcClearEnv
e RpcSetEnv
, pode levar a cenários de exceções e mal funcionamento.
Por exemplo, o REST do Protheus, não abre e fecha ambiente, ele começa a thread no grupo XX e fica nesse mesmo grupo até a thread ser finalizada, por tempo, por exceção etc. Temos diversos cenários de não conformidade, exatamente por mal uso do RpcSetEnv
em thread já previamente preparadas.
Olá, como você faz isso, você faz isso via job, via REST, numa thread com interface?
— Daniel Mendes 18 de Oct de 2022Daniel, o fonte utilizo dentro da aplicação mesmo, chamada pelo Menu.
— Rhander 19 de Oct de 2022Se você mudar isso no meio da aplicação, isso vai gerar inúmeros problemas, vai quebrar cache, posicionamento de tabelas e diversas coisas, não recomendo você fazer isso. Se você precisa fazer algo em outro grupo de empresas, pense em fazer via StartJob, pois será uma nova thread, com um novo contexto etc.
— Daniel Mendes 20 de Oct de 2022