Chúng tôi có một ứng dụng C# WPF được viết bằng .Net 4.0, một số chức năng liên kết dữ liệu và lưới tương đối đơn giản.WPF C# Hiệu suất ứng dụng
Kiểu tạo nên một vài 'chỉnh sửa', bao gồm một số màu di chuột và v.v.
Trên 3 máy, ngoài triển khai bao gồm 20, chúng tôi đang gặp phải một số vấn đề về hiệu suất rất lạ với giao diện người dùng.
Có hiệu quả, sau khi khởi động lại ứng dụng hoạt động tốt, nhưng sau một khoảng thời gian nhất định (không xác định), giao diện người dùng trở nên cực kỳ chậm chạp. Ví dụ: di chuột qua nút và sẽ có sự chậm trễ tới vài giây trước khi kiểu dáng di chuột được áp dụng/hiển thị.
Máy có các thông số kỹ thuật gần như giống hệt nhau. Các trình điều khiển đồ họa đã được cập nhật và thiết lập starndard là hai thẻ NVIDIA Quadro 290. Additoinally, chúng tôi đã thực hiện một ứng dụng 'thử nghiệm' có chứa một số thành phần UI thử nghiệm (bao gồm cả Fluent Ribbon) và không có mã phía sau. Vấn đề vẫn xảy ra.
Tôi đã chạy Windows Performance Suite để 'lặn sâu' WPF thời gian chạy, và, rất lạ, giao diện người dùng trả về mức phản hồi bình thường nếu tùy chọn 'Tắt hỗ trợ vùng bẩn' được chọn. Sự hiểu biết của tôi là, nếu có, điều này sẽ làm giảm hiệu suất hơn nữa !!!
Tôi đang mất mọi thứ khác để thử ở đây. Một phân tích hiệu suất DotTrace cho thấy hầu hết thời gian ứng dụng được chi tiêu trong PresentationFramework.dll.
[EDIT] Tất cả các máy đều là Windows XP SP3.
[EDIT] Có thể điều này xảy ra trên tất cả các máy và ứng dụng thường không được phép chạy đủ lâu để trình bày sự cố. Chúng tôi đang thử nghiệm điều này ngay bây giờ.
[EDIT] Tôi cũng nên chỉ ra rằng chúng tôi đang thử nghiệm với hotfix chi tiết here. Nó đã được cài đặt trên một máy tính cho thời điểm này, và tôi sẽ cập nhật cho phù hợp.
[EDIT - 24 giờ sau] Vì vậy, hai máy hiện đang chạy cùng một mã qua đêm. Trên máy tính của tôi (mà chưa bao giờ chứng minh được vấn đề), sau khi đăng nhập ban đầu trong ứng dụng rất chậm chạp, nhưng sau chưa đầy một phút trở lại bình thường. (Tôi đặt nó xuống máy rõ ràng kéo mọi thứ ra khỏi ổ cứng). Trên một máy khác (thường thể hiện vấn đề), ứng dụng được cải thiện sau vài giây, nhưng hiện nay vẫn còn chậm chạp so với tôi.
[EDIT - 48 giờ sau] Trên máy thử nghiệm, ứng dụng thử nghiệm hiện đã hoàn toàn không phản hồi (bị khóa) sau khi chạy trong 48 giờ. Trên cùng một máy, một ứng dụng WPF 'vỏ' nhẹ (có chứa một điều khiển tab, một số nút và một vài tấm và lưới) vẫn đang chạy và đáp ứng hoàn toàn. Vì vậy, một cái gì đó trong các điều khiển phức tạp hơn là gây ra vấn đề này ... mà thực sự chỉ trở lại (tiềm năng) gây nên và đại biểu có thể là nguyên nhân gốc rễ. Tôi sẽ xem xét hồ sơ ứng dụng/điều khiển một lần nữa. Trong thời gian có nghĩa là bất cứ ai có bất cứ lời khuyên nào về cách đảm bảo rằng ứng dụng 'dọn sạch' sau chính nó trong khoảng thời gian đều đặn? Vì chúng tôi đang xem xét các điều khiển của bên thứ ba ở đây nên các tùy chọn chỉnh sửa của chúng tôi bị giới hạn!
Sẽ đánh giá cao mọi mẹo có thể được cung cấp!
Có thể cung cấp mã không? một số SO'er khác có lẽ sẽ muốn thử điều này là tốt. Thời gian ít nhất là bao lâu trước khi các sự cố xuất hiện? – Default
Tôi có thể cung cấp mã nếu cần thiết ... nhưng ứng dụng thử nghiệm của chúng tôi tại thời điểm này nghĩa là sử dụng CHỈ một Băng thông thạo (có thể tải xuống từ CodePlex), trong và lưới trống. Không có mã nào khác ngoài lời gọi init rõ ràng. Tất nhiên tôi sẽ cung cấp cho bạn điều này nếu nó sẽ làm cho cuộc sống dễ dàng hơn. – Nick
Đừng mong đợi nhiều từ một hệ thống nguyên mẫu. Bước đầu tiên tôi muốn kiểm tra việc sử dụng đại biểu là gì. Bạn có thường xuyên sử dụng không? –