Как часть процедуры запуска моего приложения, оно проверяет целостность данных и, если обнаруживает проблему, выдает пользователю сообщение о том, что для восстановления может потребоваться некоторое время.
I 'm показывает сообщение, используя MessageBox.Show.Поскольку проверка данных выполняется из рабочего потока, я переключаюсь на поток пользовательского интерфейса, чтобы выполнить этот вызов, а затем устанавливаю ManualResetEvent, чтобы сообщить рабочему потоку, когда пользователь подтвердил сообщение.
Iначать проверку / загрузку данных в самом начале жизненного цикла приложения из конструктора в основном классе приложения, выделив рабочий поток (используя ThreadPool).
При запуске с отладчиком и сообщениемприложение просто ожидает ввода.Когда я запускаю без отладчика, приложение закрывается после отображения диалогового окна в течение 10 секунд.
Эти 10 секунд - большая подсказка - это говорит мне о том, что ОС считает, что приложение слишком долго инициализировалось (ОС убиваетприложения, которые запускаются слишком долго).
Я думаю, что мой MessageBox.Show блокирует поток пользовательского интерфейса до того, как App.RootFrameNavigating имеет шанс быть вызванным.
Мои вопросы:
- Правильный ли мой диагноз?
- Я бы предпочел начать свою загрузку данных раньше, потому что это почти полностью IO, кромедля этого окна сообщений, и чем раньше я смогу загрузить свою модель, тем лучше, но обычно ли вы задерживаете загрузку данных до более позднего жизненного цикла приложения?
- Есть другие идеи / предложения?Я не могу гарантировать, какая страница будет стартовой, потому что приложение может возобновить работу с любой страницы.Я также думаю о том, чтобы MessageBox.Show задерживался до тех пор, пока приложение не инициализировалось, возможно, запрашивая флаг, установленный App.RootFrameNavigating - имеет ли это смысл?