Я не согласен с другими ответами, рекомендующими WindowsFormsApplicationBase
. По моему опыту, это может замедлить ваше приложение. Если быть точным, то пока он запускает конструктор вашей формы параллельно с заставкой, он откладывает событие Shown вашей формы.
Рассмотрим приложение (без заставки) с конструктором, который занимает 1 секунду, и обработчиком событий в Shown, который занимает 2 секунды. Это приложение можно использовать через 3 секунды.
Но предположим, что вы устанавливаете заставку, используя WindowsFormsApplicationBase
. Вы можете подумать, что MinimumSplashScreenDisplayTime
из 3 секунд разумно и не замедлит ваше приложение. Но попробуйте, ваше приложение теперь будет загружаться за 5 секунд.
class App : WindowsFormsApplicationBase
{
protected override void OnCreateSplashScreen()
{
this.MinimumSplashScreenDisplayTime = 3000; // milliseconds
this.SplashScreen = new Splash();
}
protected override void OnCreateMainForm()
{
this.MainForm = new Form1();
}
}
и
public Form1()
{
InitializeComponent();
Shown += Form1_Shown;
Thread.Sleep(TimeSpan.FromSeconds(1));
}
void Form1_Shown(object sender, EventArgs e)
{
Thread.Sleep(TimeSpan.FromSeconds(2));
Program.watch.Stop();
this.textBox1.Text = Program.watch.ElapsedMilliseconds.ToString();
}
Вывод: не используйте WindowsFormsApplicationBase
, если в вашем приложении есть обработчик события Slown. Вы можете написать лучший код, который запускает всплеск параллельно как конструктору, так и событию Shown.