ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

CreateAnonymousThread e TFDMemTable Travando ComboBox

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
igormoita
Profissional
Profissional


Registrado: Quinta-Feira, 14 de Janeiro de 2010
Mensagens: 599

MensagemEnviada: Sex Jun 08, 2018 7:57 pm    Assunto: CreateAnonymousThread e TFDMemTable Travando ComboBox Responder com Citação

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
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Yahoo Messenger MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB