Вероятно, это артефакт событий жизненного цикла. Ваша оболочка будет отображаться задолго до того, как ваши модули начнут загружаться и регистрироваться. Если вы сделаете это, это «появится», что займет больше времени, потому что ваш пользовательский интерфейс будет отображаться с большой жирной дырой, пока не сработает код инициализации модуля.
Во многих примерах вы делаете что-то вроде "Shell.Show ();" в вашем методе CreateShell вашего загрузчика, но вы можете рассмотреть возможность перемещения ссылок на оболочку на закрытый член вашего класса начальной загрузки и вызова .Show () для него, например, так:
public class Bootstrapper : UnityBootstrapper
{
Shell shell;
protected override DependencyObject CreateShell()
{
shell = Container.Resolve<Shell>();
return shell;
}
protected override void InitializeModules()
{
base.InitializeModules();
shell.Show();
}
Я попробовал это только сейчас, и мне определенно показалось, что мое приложение получило повышение производительности, поэтому я думаю, что сделаю это сам.
Если ваши модули загружаются очень долго, вы также можете захотеть показать заставку между CreateShell и после InitializeModules.