Tôi có ứng dụng trình xem cơ sở dữ liệu WPF: Đây là cửa sổ chính đơn giản có chứa điều khiển người dùng với lưới dữ liệu hiển thị dữ liệu được trích xuất từ cơ sở dữ liệu SQLite.
Vấn đề là ứng dụng này mất 6 giây để bắt đầu cho đến khi có thể sử dụng được.Cải thiện thời gian khởi động ứng dụng WPF nhận thức
Tôi đã thử xây dựng điều khiển người dùng (và thực hiện tất cả tải dữ liệu) trong hàm dựng của cửa sổ chính:
Màn hình giật sẽ hiển thị 5s theo cách này, sau đó tiếp theo là 1s của cửa sổ chính trống cho đến khi ứng dụng sẵn sàng để được sử dụng.
Người dùng cho biết phải mất quá nhiều thời gian cho đến khi có điều gì đó (trực quan) xảy ra.
Sau đó, tôi đã chuyển chế độ điều khiển người dùng (và tải dữ liệu) vào trình xử lý sự kiện được tải của cửa sổ chính: Màn hình giật sẽ hiển thị 3 giây, sau đó là 3s của cửa sổ chính trống cho đến khi ứng dụng sẵn sàng.
Người dùng nói rằng nó "tốt hơn", nhưng không thích thực tế là một nửa cửa sổ chính đã hoàn thành được hiển thị ở trạng thái bị tắt quá lâu.
Có một số lời khuyên chung về thời gian tải ứng dụng hoặc có bất kỳ đề xuất nào khác về tình trạng này có thể được cải thiện không?
Tôi tin rằng lý tưởng cửa sổ chính sẽ được hiển thị nhanh nhất có thể, cùng với kính hoặc kính xoay một giờ cho đến khi dữ liệu được tải. Nhưng sau đó tôi không thể chỉ di chuyển việc tạo điều khiển người dùng thành một nhân viên nền vì điều này sẽ được thực hiện trên một chuỗi sai.
Có ai có bất kỳ đề xuất nào về vấn đề này không?
Chỉnh sửa:
Lưu ý rằng ngay bây giờ tôi vừa gán truy vấn LINQ-to-EF làm nguồn dữ liệu lưới.
Một cải tiến khả năng có thể để tải dữ liệu này vào một bảng dữ liệu ở chế độ nền và gán nó chỉ một lần nạp ...
Edit2: Tôi đang sử dụng .net 4 với System.Data.SQLite và EF4 để tải dữ liệu. Có ít nhất 4000 hàng và 30 cột.
Bạn đang tải bao nhiêu dữ liệu từ cơ sở dữ liệu? Bạn đang tải dữ liệu như thế nào - sử dụng ORM (nếu có, cái nào?) Hoặc ADO.NET đơn giản? – alimbada
Giáo dục người dùng rằng rất nhiều điều đang diễn ra. Kiểm tra những gì đang thực sự diễn ra và tối ưu hóa cho phù hợp. Một màn hình đăng nhập, hoặc giật gân mở rộng (với một số hình động lượn sóng/progressbar) có thể chính xác những gì họ đang tìm kiếm. – CodingBarfield
@alimbada: Tôi đã chỉnh sửa câu hỏi để bao gồm thông tin này. Nhưng nó là một câu hỏi chung hơn là gắn với Entity Framework, vv ADO.NET hoặc bất kỳ ORM sẽ mất thời gian để tải dữ liệu, bạn cũng có thể thay thế điều này bằng Thread.Sleep (..). Câu hỏi đặt ra là làm thế nào để đối phó với tình huống này. – Marc