Нечего получить от создания потока, если ваша цель - как можно быстрее открыть заставку.
Есть несколько способов создания заставок, и упоминается более сложный здесь , но это простой метод, который я использовал с полным успехом:
Просто убедитесь, что вы загружаете и показываете заставку сначала , а затем продолжаете загружать ваше приложение, пока пользователь смотрит на симпатичный экран заставки. Когда основная форма завершает загрузку, она может закрыть всплеск непосредственно перед тем, как она себя покажет (простой способ сделать это - передать форму всплеска главной форме в ее конструкторе):
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
SplashForm splash = new SplashForm();
splash.Show();
splash.Refresh(); // make sure the splash draws itself properly
Application.EnableVisualStyles();
Application.Run(new MainForm(splash));
}
public partial class MainForm : Form
{
SplashForm _splash;
public MainForm(SplashForm splash)
{
_splash = splash;
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// or do all expensive loading here (or in the constructor if you prefer)
_splash.Close();
}
}
Альтернатива: если вы предпочитаете не передавать всплеск в MainForm (возможно, он выглядит не элегантным), подпишитесь на событие Load в MainForm и закройте там заставку:
static class Program
{
static SplashForm _splash;
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
_splash = new SplashForm();
_splash.Show();
_splash.Refresh();
Application.EnableVisualStyles();
MainForm mainForm = new MainForm();
mainForm.Load += new EventHandler(mainForm_Load);
Application.Run(mainForm);
}
static void mainForm_Load(object sender, EventArgs e)
{
_splash.Dispose();
}
}
Как уже упоминалось в этой теме , потенциальным недостатком этого решения является то, что пользователь не сможет взаимодействовать с заставкой. Однако обычно это не требуется.