Итак, после многих проб и ошибок, я пришел к следующему подходу, над которым я сейчас работаю, чтобы увидеть, насколько хорошо он работает.
Я создал Shell UserControl в своей библиотеке классов, котораядействует как оболочка (контейнер) для пользовательского интерфейса.Я установил этот элемент управления как RootVisual.В содержание этого элемента управления я добавляю свой элемент управления / представление заставки и выполняю все необходимые вызовы службы запуска.Используя WaitHandles, я жду, пока все вызовы не вернутся, прежде чем заменить заставку на стартовую страницу приложения.
Приложение не знает, как все это работает, что и было моей целью.Они просто переопределяют метод, который я добавил в загрузчик, чтобы выполнить любые вызовы службы запуска.Вызовы сервиса выполняются в фоновом потоке, и код использует WaitHandle.WaitAll для блокировки до завершения всех вызовов, который затем использует Dispatcher.BeginInvoke для замены всплеска главной страницей приложения.
Все это кажетсяработать очень хорошо.