Pergunta

Winform no CF é um pouco pesado, inicializar muitos identificadores do Windows consome muito tempo e memória.Outro problema é a falta de buffer duplo integrado e a falta de controle sobre a renderização da IU, o que significa que durante operações intensivas do processador, a IU pode deixar o usuário olhando para uma tela meio renderizada.Legal!

Para aliviar esse problema, eu procuraria uma estrutura de controle leve. Já existe alguma em funcionamento ou seria necessário fazer uma homebrew?

Por leve quero dizer uma biblioteca de controle que permite controlar totalmente a pintura de controles e não usa muitos identificadores de janelas caros.

OBSERVAÇÃO:Por favor, não sugira que estou executando muito no thread da interface do usuário.Aquilo é não O caso.

Foi útil?

Solução

Encontrei isso outro dia, o que pode ser útil pelo menos como ponto de partida: Fuild - Controles de toque .NET do Windows Mobile.A aparência é boa, mas não há suporte para tempo de design.Não sei muito sobre o consumo de memória, etc., mas tudo tem buffer duplo e o desempenho parece ser muito bom.

Outras dicas

Ok, só uma ideia que surgiu na minha cabeça...

Que tal criar um objeto de sincronização, por ex.seção crítica ou bloqueio único, em seu aplicativo, compartilhado entre seus threads de trabalho e de GUI.Substitua a tinta.Ao começar a pintar, bloqueie todos os outros threads, de forma que você não fique com uma tela meio pintada enquanto eles monopolizam a CPU.

(é claro que isso pressupõe que apresentar uma imagem bonita ao usuário é a coisa mais importante que você precisa;))

um pouco lento e você não pode controlar o evento de pintura, portanto, durante operações intensivas do processador, a interface do usuário pode deixar o usuário olhando para uma tela meio renderizada.

Geralmente é uma má ideia realizar tarefas caras no thread da UI.Para manter sua IU responsiva, essas tarefas devem ser executadas por um thread de trabalho

Na verdade, você pode substituir o evento paint.

E a ideia é que você transfira operações de longa duração para um thread separado.Na verdade, isso não é diferente de qualquer outra estrutura orientada a eventos. Qualquer coisa que depende do tratamento de um evento do Paint será suscetível a isso.

Além disso, não existe um sistema que permita determinar quando o evento paint é gerado.Esse tipo de evento geralmente é gerado pela camada do gerenciador de janelas, que está fora da aplicação (ou mesmo do framework).Você pode cuidar do evento sozinho e simplesmente não trabalhar algumas vezes, mas eu não recomendaria isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top