2013-10-03 19 views
7

Ho creato una semplice applicazione con wpf e ho notato uno strano comportamento: l'applicazione ha due pulsanti, con comportamenti non correlati e molto semplici. Ogni volta che lo avvio, il primo clic di uno dei pulsanti richiede da due a tre secondi per essere completato. Solo il primo clic è lento. I clic successivi sono quasi immediati, come previsto per il loro comportamento semplice. Ho cercato su Google e SO, ma nessuno sembra aver riscontrato lo stesso problema.Il primo clic del pulsante è lento

i dettagli dell'applicazione sono:

NorthWind db su SQL server 2008;

Classi generate automaticamente da SQL a SQL;

Customers Tabella come un DataGrid;

Pulsante 1 OnClick Evento: Context.SubmitChanges();

Pulsante 2 Onclick L'evento alterna una proprietà di dipendenza booleana nella classe MainWindow.

Come potete vedere, la configurazione è molto semplice. Se ogni singolo clic dei pulsanti fosse lento, li avrei attribuiti ai problemi di prestazioni di WPF. Ciò che è strano è che ogni volta che lo avvio, solo il primo clic risponde lentamente, mentre altri sono normali.

+0

Il compilatore JIT deve compilare il bytecode al primo clic. Può eseguire il codice nativo compilato su altri clic perché è stato memorizzato nella cache. Ciò renderebbe qualsiasi clic dopo il primo molto più veloce. – Rohan

+0

Ho visto alcune operazioni di rete mostrare questo comportamento. Inizialmente pensavo che avesse a che fare con la ricerca dell'hostname, ma che doveva essere memorizzato nella cache dal sistema operativo, ma ogni volta che l'applicazione veniva eseguita ciò accadeva. Si descrive che succede con un'operazione non connessa alla rete. – Steve

+0

@Rohan Ci ho pensato, ma la compilazione non dovrebbe essere completata prima dell'avvio dell'applicazione? Se no, c'è un modo per forzare questo comportamento? – jose

risposta

9

Giusto per ottenere questa domanda dalla lista senza risposta, ecco i miei risultati: questo è un problema noto con il gesto di acquisizione di IntelliTrace. Disattivando l'acquisizione del gesto (Strumenti> -> Opzioni-> IntelliTrace-> IntelliTrace Events) il problema scompare completamente. Maggiori dettagli possono essere trovati in this answer

+0

Più uno. Questo mi ha infastidito per circa un'ora! –

Problemi correlati