В этом проекте WinForms у меня есть определенная информационная форма (InfoForm
), которая всплывает на 2 секунды, а затем исчезает.Я делаю это, вызывая
infoForm.Show();
и затем внутри InfoForm
У меня есть Timer
, который тикает через 2 секунды и звонит Close()
.
Теперь, иногда естьдругую форму ErrorForm
Мне нужно показать модально (используя errorForm.ShowDialog()
), чтобы сообщить пользователю, что произошла ошибка, и ему нужно нажать OK, прежде чем они смогут продолжить.Это может произойти, когда InfoForm
открывается и закрывается, и одно не должно влиять на другое.
Но это так.
Я зашел настолько далеко, что установил точку останова на вызове на ShowDialog
, и если InfoForm
открыта в тот момент, когда я достиг точки остановазатем, когда я нажимаю «Перешагнуть», вместо того, чтобы вызвать ErrorForm
и ждать, пока я нажму «ОК», отладчик просто переходит через строку и уже находится на следующей строке, как если бы форма никогда не открывалась.Между тем в фоновом режиме InfoForm
закрылся, поэтому, если я переустановил точку выполнения для вызова на ErrorForm.ShowDialog()
, а затем «Шаг за шагом», форма появится, как и ожидалось, и ждет, пока я не нажму «ОК», прежде чемпереход к следующему утверждению.
Удаление точек останова и запись в журнал отладки подтверждает мое подозрение, что именно закрытие InfoForm
вызывает преждевременное закрытие моего ErrorForm
:
Тема 09 - 2011/12/14 16: 39: 30.574 - отображается информационная форма
Тема 09 - 2011/12/14 16: 39: 31.300 - До ErrorForm.ShowDialog
Тема 09 - 2011/12/14 16: 39: 32.584 - Тик таймера
Тема 09 - 2011/12/14 16: 39: 32.585 - Закрытие информационной формы
Тема 09 - 2011 /12/14 16: 39: 32.593 - Ошибка закрытия формы
Тема 09 - 2011/12/14 16: 39: 32.593 - После ErrorForm.ShowDialog
Почему это происходит,а что такое лекарство?