Если вам необходимо выполнить некоторую фоновую работу, прежде чем показывать форму, я бы предложил два возможных варианта.
Первый - просто выполнить фоновую работу до того, как вы создадите форму и вызовете Application.Run
.
Второй вариант, если вам нужен цикл сообщений, чтобы быть активным, пока вы выполняете фоновую работу, это использовать перегрузку Application.Run
, которая не принимает From в качестве параметра, и позже показывать свою форму именно тогда, когда вы хочу. Единственный улов заключается в том, что вам придется вручную вызывать Application.Exit
или Application.ExitThread
, когда вы хотите завершить приложение (потому что у него не будет формы, чье событие Close можно просмотреть).
Итак, ваш код может выглядеть примерно так:
void Main()
{
// trigger some background work
...
// and start the message pump
Application.Run();
}
void SomeBackgroundWork()
{
// let's say now you completed the background work and you want to show your main Form
MyForm f = new MyForm();
f.Close += delegate { Application.Exit(); };
f.Show();
}
Пожалуйста, прокомментируйте, если нужны пояснения ...