2013-10-03 363 views
7

我用wpf創建了一個簡單的應用程序,並注意到一個奇怪的行爲: 應用程序有兩個按鈕,具有不相關和非常簡單的行爲。每當我啓動它,任何按鈕的第一次點擊需要兩到三秒才能完成。只有第一次點擊很慢。隨後的點擊幾乎是立竿見影,正如他們簡單的行爲所預期的那樣。我搜索谷歌和SO,但沒有人似乎遇到同樣的問題。第一次點擊按鈕很慢

應用程序的詳細信息是:

SQL Server 2008上的NorthWind db;

Linq to SQL自動生成的類;

Customers作爲DataGrid的表;

按鈕1 OnClick事件:Context.SubmitChanges();

Button 2 Onclick事件在MainWindow類中交替布爾型DependencyProperty。

正如您所看到的,設置非常簡單。如果每按一下按鈕的速度都很慢,我會將它們歸因於WPF性能問題。奇怪的是,每當我啓動它,只有第一次點擊響應緩慢,其他人是正常的。

+0

JIT編譯器必須在第一次單擊時編譯字節碼。它可以在其他點擊上執行已編譯的本機代碼,因爲它已被緩存在內存中。這會使第一個點擊後的任何點擊快得多。 – Rohan

+0

我見過一些網絡操作出現這種行爲。我最初認爲它與主機名查找有關,但應該由操作系統緩存,但每次運行應用程序時都會發生。儘管如此,你可以用非網絡相關的操作來描述它。 – Steve

+0

@Rohan我想過這個,但是應用程序啓動之前不應該編譯完成嗎?如果沒有,有沒有辦法強制這種行爲? – jose

回答

9

只是爲了從未回答的列表中獲得此問題,下面是我的發現:這是IntelliTrace手勢捕獲的已知問題。關閉手勢捕捉(工具> - >選項 - > IntelliTrace-> IntelliTrace事件)會使問題完全消失。更多詳細信息可參見this answer

+0

再加一個。這讓我煩了大約一個小時! –

相關問題