Никогда не вводите многопоточность в приложении, если это не является абсолютно необходимым.
Как сказал сэр Уолтер,
Иначе ты войдешь в мир боли.
Кроме того, любые взаимодействия с пользовательским интерфейсом, такие как отображение окна или работа с элементами управления, должны выполняться только в основном потоке.
Если вы хотите что-то сделать, пока форма находится на экране, звоните Show
вместо модального ShowDialog
, чтобы выполнение не блокировалось.
Application.Exit ()
будет хорошо, если вы вызовете его в главном потоке, как вы должны.
Если вы хотите показать заставку до показа главной формы, вам не следует делать это в основной форме * InitializeComponent
. Вместо этого измените код в Program.cs
, чтобы сначала показывать заставку:
Application.Run (new SplashScreenForm ());
Где-то в SplashScreenForm
(честно, я не знаю, зачем вам это вообще нужно), вам следует проверить лицензию, и, если все в порядке, закройте окно, создайте экземпляр MainForm
и вызовите его ShowDialog
. Если это плохо - просто закройте окно, и, поскольку это была последняя форма, приложение остановится.