Tempo aproximado para leitura: 00:04:00 min
Ocorrência
Ao executar um programa AdvPL, cujo código fonte tenta criar mais de 999 componentes visuais, o TOTVS Application Server emite uma mensagem de erro.
Exemplo:
ERRO THREAD ([5244], user_teste, MAQ-TESTE)
Stack :
Maximum number of components per window exceeded!
Ambiente
Cross Segmentos - Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.8
Causa
Esse erro ocorre, pois o fonte tenta criar mais de 999 componentes visuais.
Você pode utilizar o FreeObj(), para limpar a memoria, porém sem o destrutor adequado, está sujeito a um "RunTime Leak" (ou vazamento de memória em tempo de execução), onde cada criação de uma nova instância de uma determinada classe não é automaticamente limpa da memória no caso de saída de escopo ou até mesmo atribuindo NIL apenas na variável que contém o objeto, pois o fato dele ainda ter uma referência em uso o impede de ser eliminado da memória, mesmo que a referência esteja em uso por ele mesmo.
Solução
O programa AdvPL deve ser corrigido para não criar um número superior a 999 componentes visuais. Para isso, solicite a correção do programa a área responsável pelo programa/ambiente.
O TOTVS Application Server foi corrigido para não parar a execução após o erro do programa.
Você pode tentar utilizar o End()
oDialog:End() // exemplo
ou
User Function Exemplo()Local oObj := MyClass():New()
oObj:DoSomething("Hello")oObj:DoNothing("Goodbye")FreeObj(oObj)Return
Saiba mais
Maximum number of components
FreeObj
Classe TDialog
0 Comentários