igormoita Profissional


Registrado: Quinta-Feira, 14 de Janeiro de 2010 Mensagens: 601
|
Enviada: Sex Jun 08, 2018 7:57 pm Assunto: CreateAnonymousThread e TFDMemTable Travando ComboBox |
|
|
Olá, estou utilizando FMX para Desktop (ainda só testado em Windows) e estou tendo o seguinte erro para o contexto:
No link segue os códigos http://textuploader.com/dpf60
Delphi 10.1 Berlin;
Servidor DataSnap Rest/JSON;
Cliente fazendo requisições, igual os sistemas comuns com esta estrutura;
Tenho buscas muito 'pesadas' então resolvi utilizar CreateAnonymousThread, só que por algum motivo o ComboBox está travando o PopUp, se eu tirar a Thread, o ComboBox fecha o PopUp normalmente, mas o sistema irá travar um tempo com as buscas.
Tentei utilizar o TThread.Synchronize para preencher o TFDMemTable local com os dados recebidos do DataSnap, mas o problema persiste.
Explicação da lógica do código: tenho várias tabelas com baixa possibilidade de atualização durante o dia, então fiz um método padrão para carregar elas, basicamente o Cliente sempre vai requisitar, mas o DataSnap irá validar se a data Local coincide com a data do servidor e retornará alguma coisa caso tenha atualizações, esse método no cliente é o AtualizaRegistroMemoria do link que passei, então ele é utilizado várias vezes. Foi nele que eu coloquei o TThread.Synchronize, na minha lógica o sistema irá baixar em Thread e se precisar ele vai preencher o TFDMemTable dentro do TThread.Synchronize. A Thread anonima pode executar o AtualizaRegistroMemoria de qualquer formulario e buscar qualquer tabela 'cache'. Mas acontece que tds TFDMemTables que são atualizados dentro de uma Thread dão o problema do travamento do PopUp, se ele for preenchido sem Thread o problema não acontece.
Segue imagem com o travamento, perceba que o foco está no Edit, então o ComboBox deveria ter fechado o PopUp, mas fica essa 'sombra' dele no sistema. (Some se eu dar um Application.ProcessMessage, mas não gostaria de utilizar essa 'solução')
 _________________ SEMPRE COLOQUE [RESOLVIDO] NO SEU POST |
|