Ứng dụng WPF trên máy tính để bàn của tôi (4.0) hoạt động với DB và để thiết lập kết nối với SQL Server khi khởi động ứng dụng. Tất nhiên, hoạt động này mất một thời gian và người dùng phải chờ một vài giây (3-5) trong khi .Net Framework khởi động và kết nối với SQL Server.MessageBox với các chi tiết ngoại lệ ngay lập tức biến mất nếu sử dụng màn hình splash trong WPF 4.0
Khi thích hợp trong các trường hợp như vậy, tôi quyết định sử dụng màn hình giật gân. Tôi thêm một số hình ảnh cho giải pháp, thiết lập hành động xây dựng như «Splash màn hình», biên dịch ứng dụng của tôi, nó hoạt động! Nếu cố gắng kết nối với SQL Server không thành công (ví dụ: máy chủ không khả dụng) ứng dụng của tôi sẽ ném ngoại lệ và tôi hiển thị cho người dùng MessageBox với các chi tiết cảnh báo và ngoại lệ, người dùng nhấn OK và tắt ứng dụng (Application.Current.Shutdown()).
Trước khi tôi thêm màn hình splash, tất cả logic này được sử dụng để hoạt động hoàn hảo, nhưng bây giờ, với màn hình giật gân được thêm vào, nếu tôi chạy ứng dụng trong khi SQL Server không khả dụng, ứng dụng sẽ ném ngoại lệ (như tôi đã yêu cầu trong mã của tôi), nhưng MessageBox với thông báo xuất hiện trong 1-2 giây và biến mất mà không có bất kỳ tương tác người dùng nào, người dùng thậm chí không thể đọc những gì được viết trên đó.
Tôi phát hiện ra rằng nếu tôi cố gắng hiển thị 2 MessagBox, vì vậy trang đầu tiên sẽ xuất hiện và biến mất ngay lập tức, nhưng cái thứ hai sẽ ở lại cho đến khi người dùng nhấn OK.
Câu hỏi của tôi là: Cách giải quyết vấn đề này? Tôi muốn sử dụng màn hình splash và hiển thị một MessageBox nếu một ngoại lệ đã được ném và cho phép người dùng quyết định thời điểm đóng nó (người dùng nhấp vào nút OK).
Dưới đây là một biểu đồ dòng chảy mô tả logic của ứng dụng của tôi:
Không có ngoại lệ (kịch bản tốt): Chạy ứng dụng → Splash màn hình → if (isConnectedToSQL = true) → Hiển thị cửa sổ chính ...
Với ngoại lệ (kịch bản xấu): Chạy ứng dụng → Màn hình Splash → nếu (isConnectedToSQL = false) → Ném ngoại lệ → Hiển thị MessageBox với chi tiết ngoại lệ → Người dùng nhấp vào OK → Đóng ứng dụng.
Cảm ơn.