Я создал очень маленький .exe, который показывает заставку как можно скорее. После этого я все инициализирую.
JIT-компилятор загружает модули, которые вызываются из метода, который подключается. Поэтому вы должны позаботиться о том, чтобы метод, отображающий заставку, не вызывал методы в модулях, которые вы пока не хотите загружать.
Пример:
internal sealed class Startup {
// Call Startup.Run() from Program.Main to start the application
internal void Run() {
this.ShowSplash();
this.ContinueStartup();
}
private void ShowSplash() {
_splash = new Splash();
_splash.Show();
Application.DoEvents();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void ContinueStartup() {
// Do the startup here
}
}
[MethodImpl (MethodImplOptions.NoInlining)] необходим, чтобы метод ContinueStartup () не вставлялся в jit, поскольку это приведет к слишком ранней загрузке модулей.