ShowDialog
показывает форму модально. Это означает, что форма будет отображаться, все другие формы будут отключены, и функция ShowDialog
не вернется, пока не закроется модальное диалоговое окно.
Используйте взамен Show
. Это показывает форму немодальной. Когда вы это сделаете, функция Show
немедленно вернется, а форма останется открытой.
Вы можете думать о ShowDialog
как о синхронном, а Show
как об асинхронном.
Убедитесь, что любые методы в потоке, которым необходимо обновить прогресс в форме, вызываются с помощью Invoke
или BeginInvoke
, чтобы убедиться, что они выполняются в контексте основного потока пользовательского интерфейса.
Наконец, ваш код в том виде, в каком он есть, не ждет, пока поток выполнит свою работу. Блок try / catch оборачивает только показ формы и начало выполнения потока (t1.Start()
). Когда вы вызываете Start
в потоке, этот вызов возвращается асинхронно, и поток продолжает выполнять свою работу. Я не совсем уверен, что ваш код пытается сделать, но я подозреваю, что блок catch
должен быть внутри потока.