2013-10-03 17 views
7

Tôi đã tạo một ứng dụng đơn giản với wpf và nhận thấy một hành vi lạ: Ứng dụng có hai nút, với hành vi không liên quan và rất đơn giản. Bất cứ khi nào tôi khởi chạy nó, lần nhấp đầu tiên của bất kỳ nút nào mất từ ​​hai đến ba giây để hoàn tất. Chỉ có nhấp chuột đầu tiên chậm. Các nhấp chuột tiếp theo gần như ngay lập tức, như mong đợi đối với hành vi đơn giản của chúng. Tôi đã tìm kiếm google và SO, nhưng không ai có vẻ gặp vấn đề tương tự.Nút bấm đầu tiên chậm

chi tiết của ứng dụng là:

NorthWind db on SQL server 2008;

LINQ to SQL các lớp được tạo tự động;

Customers Bảng dưới dạng DataGrid;

Nút 1 OnClick Sự kiện: Context.SubmitChanges();

Nút 2 Onclick Sự kiện thay thế một phụ thuộc boolean DepperencyProperty trên lớp MainWindow.

Như bạn có thể thấy, quá trình thiết lập rất đơn giản. Nếu mỗi nhấp chuột duy nhất của các nút là chậm, tôi sẽ có quy cho họ để các vấn đề hiệu suất WPF. Điều kỳ lạ là bất cứ khi nào tôi khởi chạy nó, chỉ lần nhấp đầu tiên phản hồi chậm và những người khác thì bình thường.

+0

Trình biên dịch JIT phải biên dịch bytecode trên lần nhấp đầu tiên. Nó có thể thực thi mã nguồn gốc được biên dịch trên các nhấp chuột khác vì nó được lưu trong bộ nhớ cache. Điều này sẽ thực hiện bất kỳ nhấp chuột nào sau lần nhấp đầu tiên nhanh hơn nhiều. – Rohan

+0

Tôi đã thấy một số hoạt động mạng thể hiện hành vi này. Ban đầu tôi nghĩ rằng nó đã phải làm với tra cứu tên máy chủ, nhưng đó nên được lưu trữ bởi hệ điều hành, nhưng mỗi khi ứng dụng được chạy điều này sẽ xảy ra. Bạn mô tả nó xảy ra với một hoạt động liên quan đến mạng không. – Steve

+0

@Rohan Tôi đã nghĩ về điều đó, nhưng không nên biên dịch hoàn thành trước khi ứng dụng được khởi chạy? Nếu không, có cách nào để ép buộc hành vi này không? – jose

Trả lời

9

Chỉ để có được câu hỏi này ra khỏi danh sách chưa được trả lời, đây là những phát hiện của tôi: đây là một vấn đề đã biết với việc chụp cử chỉ của IntelliTrace. Tắt chụp ảnh cử chỉ (Công cụ> -> Tùy chọn-> IntelliTrace-> Sự kiện IntelliTrace) khiến cho sự cố biến mất hoàn toàn. Bạn có thể tìm thêm chi tiết tại this answer

+0

Cộng một. Điều này đã làm tôi khó chịu trong khoảng một giờ! –

Các vấn đề liên quan