Riduci i tempi di avvio dell'app .NET form di Windows che esegue fuori da un'unità di rete

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

  •  01-07-2019
  •  | 
  •  

Domanda

Ho una semplice app per Windows .NET 2.0 che si esaurisce da un'unità di rete (ad esempio \ MyServer \ MyShare \ app.exe). È molto semplice e carica solo le librerie .NET minime. Tuttavia, il caricamento richiede ancora ~ 6-10 secondi. Le persone pensano che qualcosa debba essere sbagliato e che l'app così piccola impiega così tanto tempo a caricarsi.

Ci sono suggerimenti per migliorare la velocità di avvio?

È stato utile?

Soluzione

Prova Sysinternals Process Explorer . Ha una colonna di "% tempo in JIT". Se tale numero è elevato, è possibile eseguire ngen sulla tua applicazione. In caso contrario, è probabile che sia una connessione di rete lenta. CodeGuru ha un tutorial su utilizzo di ngen .

Altri suggerimenti

Per accelerare il tempo di caricamento, è possibile compilare una piccola applicazione di avvio e lasciare che l'applicazione esegua il caricamento degli assembly in runtime da una libreria esterna alla cartella bin.

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

Determinare il tempo JIT per valutare la fattibilità di NGEN è sicuramente un buon punto di partenza. Concordo anche con coloro che cercano di ridurre i tempi di caricamento utilizzando un altro punto di ingresso per caricare gli assiemi. Spesso è il aspetto della velocità contro velocità effettiva che migliora l'esperienza dell'utente.

Imposta Clickonce per l'app in modo che sia distribuita sul computer locale.

Potresti imbrogliare come Microsoft Office (e Adobe credo) e aggiungere un'app nel gruppo Startup che dice all'app di caricare e quindi scaricare immediatamente. In questo modo le DLL sono pre-memorizzate nella cache per quando l'utente tenta di avviare l'app. Unico problema: non sono del tutto sicuro che funzioni in questo modo con i file di rete e, in caso contrario, questa potrebbe essere la causa dell'avvio lento (ovvero stai sempre facendo un avvio a freddo contro un possibile avvio a caldo se in esecuzione dal computer locale).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top