Domanda

Ho un'applicazione grafica che occorre del tempo per caricare tutti i suoi plugin, prima che sia pronto per essere utilizzato dall'utente.

Voglio scrivere un programma C # che misurare il tempo impiegato per questa applicazione per l'avvio. Ho pensato che il metodo di Process.WaitForInputIdle () farebbe il trucco, ma non è così. Esce non appena viene avviato il processo.

Quello che ho ora è questo:

DateTime startTime = DateTime.Now;

Process myAppUnderTest = Process.Start("C:\\Program Files\\My App\app_under_test.ext");

myAppUnderTest.WaitForInputIdle();   //Wait until the application is idle.

DateTime endTime = DateTime.Now;

int elapsedTimeInSecs = endTime.Subtract(startTime).Seconds;

Console.WriteLine("Start up time (sec): {0}", elapsedTimeInSecs);

Come posso ottenere il tempo di avvio che intendo?

È stato utile?

Soluzione

io dico che è molto difficile.

Come si fa a classificare un'applicazione caricata e pronta? Se c'è un modo (che io non la penso così), allora sarebbe facile.

Ma se l'applicazione che si sta caricando ti segnali in qualche modo (IPC / files / rete), allora si può catturare il segnale e dire l'applicazione viene caricata. In tal caso, è possibile utilizzare un contatore timer / cronometro / prestazioni.

Se è possibile modificare l'applicazione a tempo di essere, allora si può raggiungere in vari modi. Se i suoi esterni a te, dubito che non v'è alcun modo semplice.

Altri suggerimenti

Process.WaitForInputIdle () respones alla finestra principale. Una volta che il processo si avvia si muoverà su. C'è un messaggio sulla principale finestra principale è possibile osservare che indica l'applicazione è in uno stato pronto? Se è così si può provare a mettere o applicazione in un unitl ciclo che è presente o così tanto tempo è passato. Come è stato notato si avrà probabilmente anche voler esaminare la classe cronometro per il vostro tempismo.

Solo un paio di altri pensieri, come si sta facendo questo. Assicurarsi che questo processo è l'unico in esecuzione. A volte è possibile ottenere alcuni conflitti altrimenti. Potrebbe essere necessario giocare con arround capire che cosa il grilletto è per dirvi quando l'applicazione è a pieno carico.

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