У меня есть эта проблема, когда у меня есть очень большая форма (winforms), загружаемая методом Activation.CreateInstance(Type)
, потому что загрузочный контейнер используется для разных форм. Он открывается в первый раз, но если я закрою его, а затем снова открою его, он всегда будет разбиваться на полпути через метод InitializeComponent()
, где он «прыгает» на метод Dispose()
, сбой на NullReferenceException
.Большая ошибка, возникающая при втором открытии
Моя нынешняя теория заключается в том, что вызов Dispose()
происходит из предыдущего экземпляра формы, у которой не было времени до конца, и теперь пытается избавиться от текущей формы. (это имеет смысл?) С другой стороны, я думаю, что, возможно, это проблема Activation.CreateInstance()
, но это первый раз, когда я вижу этот класс, поэтому я тоже не уверен в этом.
Вчера я проверил тест во время отладки, и, если я подождал несколько секунд на каждой строке при сбое InitializeComponent()
, я прошел без ошибок.
Почему бы вам просто не скрывать, а не закрывать? Если ваша теория 'dispose' правильная, это должно быть хорошо. – KSdev
Я попробовал 'hide' вместо' close', но он по-прежнему падает. Есть ли способ узнать, находится ли объект в распоряжении и не позволяет пользовательскому интерфейсу повторно открыть форму до ее завершения? –
вы можете указать пример кода? – Grundy