Reduzir o tempo de inicialização do Windows .NET formam aplicativo em execução fora de uma unidade de rede

StackOverflow https://stackoverflow.com/questions/104815

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu tenho um .NET simples 2,0 janelas formar aplicativo que funciona fora de uma unidade de rede (por exemplo \ MyServer \ MyShare \ app.exe). É muito básico, e apenas carrega as bibliotecas nuas mínimos .NET. No entanto, ainda leva ~ 6-10 segundos para carregar. As pessoas pensam que algo deve estar errado esse aplicativo tão pequeno leva tanto tempo para carga.

Existem quaisquer sugestões para melhorar a velocidade de inicialização?

Foi útil?

Solução

Experimente Sysinternals Process Explorer . Ele tem uma coluna de "time% em JIT". Se esse número é grande você pode executar ngen na sua aplicação. Se não for, é provável que seja uma conexão de rede lenta. CodeGuru tem um tutorial sobre uso de ngen .

Outras dicas

Para acelerar o tempo de carga, você pode compilar uma aplicação minúscula início e deixe que a aplicação fazer o carregamento de montagens em tempo de execução de uma pasta fora bin biblioteca.

http://support.microsoft.com/kb/837908

A determinação do tempo JIT para pesagem NGEN viabilidade é certamente um bom ponto de partida. Eu também concordo com aqueles que olham para falsificar o tempo de carregamento usando outro ponto de entrada para então carregar as assembléias. Muitas vezes é o aparência de velocidade contra velocidade real que melhora a experiência do usuário.

Clickonce de configuração para o aplicativo por isso é implantado para a máquina local.

Você pode enganar como o Microsoft Office (e Adobe eu acho) e adicionar um aplicativo no grupo de inicialização que informa o aplicativo para carga e, em seguida, imediatamente descarregar. Dessa forma, as DLL são pré-armazenados na memória para quando o usuário tenta iniciar o aplicativo. Apenas problema: eu não estou completamente certo se ele funciona dessa maneira com arquivos em rede - e se isso não acontecer, isso pode ser a causa do início lento (ou seja, você está sempre fazendo um arranque a frio vs uma possível partida a quente se correr a partir da máquina local).

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