Мое настольное WPF-приложение (4.0) работает с БД, и для этого ему нужно установить соединение с SQL Server при запуске приложения.Конечно, эта операция занимает некоторое время, и пользователю нужно подождать несколько секунд (3-5), пока .Net Framework запускается и подключается к SQL Server.
При необходимости в таких случаях я решил использовать всплескэкран.Я добавил картинку к решению, установил действие сборки как «Заставка», скомпилировал мое приложение, все работает!Если попытка подключиться к SQL Server не удалась (например, сервер недоступен), мое приложение выдает исключение, и я показываю пользователю MessageBox
с подробностями предупреждения и исключения, пользователь нажимает OK и завершает работу приложения (Application.Current.Shutdown()
).
До того, как я добавил заставку, вся эта логика раньше работала идеально, но теперь, с добавлением заставки, если я запускаю приложение, когда SQL Server недоступен, приложение выдает исключение (как я просил в моем коде), но MessageBox
с уведомлением появляется на 1-2 секунды и исчезает без какого-либо взаимодействия с пользователем, пользователь даже не может прочитать то, что на нем написано.
Я обнаружил, что если я попытаюсь показать 2 MessagBoxes
, топервый появится и исчезнет немедленно, но второй останется до тех пор, пока пользователь не нажмет OK.
Мой вопрос: как решить эту проблему?Я хочу использовать заставку и показать один MessageBox
, если было сгенерировано исключение, и позволить пользователю решать, когда его закрывать (пользователь нажимает кнопку OK).
Вот блок-схема, описывающая логикумоего приложения:
Без исключения (хороший сценарий): Запустить приложение → Заставка → if(isConnectedToSQL=true)
→ Показать главное окно…
За исключением (плохой сценарий): Запустить приложение → Заставка →if(isConnectedToSQL=false)
→ Бросить исключение → Показать MessageBox с подробностями об исключении → Пользователь нажимает ОК → Закрыть приложение.