Это, вероятно, очень необычно, но метод Main()
приложения WinForms может, по какой-то причине, выглядеть так:
static bool AbortStartup { get; set; }
[STAThread]
public static void Main()
{
Application.Run(new CancelableSplashScreen());
if (!AbortStartup)
Application.Run(new MainWindow());
}
Когда закрывается заставка, появляется главное окно, если на заставке не установлено свойство AbortStatup
равное true
. Если вы добавили обработчик событий в Application.ThreadException
из заставки, экземпляр CancelableSplashScreen
не будет собирать мусор до тех пор, пока приложение не завершится, что может быть значительно позже.