Visual Studio 2010 аварийно завершает работу при открытии формы, содержащей пользовательский элемент управления, в режиме конструктора - PullRequest
9 голосов
/ 10 августа 2011

Моя проблема заключается в следующем: у меня есть пользовательский элемент управления UserControl в моем проекте Windows Forms.Я могу оформить это в дизайнере просто отлично.Но как только я хочу редактировать форму, содержащую элемент управления, происходит сбой Visual Studio 2010.

Насколько я мог видеть, конструктор и событие Load элемента управления выполняются при загрузке формы.

Я попытался использовать другой экземпляр VS2010 для отладки конструктора, но не смог найти место, где происходит выполнение.

Сначала мне показалось, что проблема для объекта Threading.Timer, которыйя использую для инициализации моих объектов (т.е. загрузку значений из базы данных и т. д. (при ошибке попробуйте позже подход;))), Callback-функция была выполнена разработчиком, поэтому она попыталась получить доступ к объектам, к которым она имеланет доступа в режиме дизайна.Инициализация объекта Threading.Timer находится в событии Load.Но даже после того, как я прокомментировал все в событии загрузки (кроме блока try catch и вызова Debugger.Break() для наличия точки останова во втором экземпляре VS2010 для отладки конструктора), Visual Studio продолжает падать, как только я хочу редактировать формусодержащий элемент управления в режиме разработки.

Я попытался найти несколько шагов, которые я нашел здесь, без ответа на мою проблему: Пользовательский элемент управления всегда дает сбой Visual Studio

Так что даже если дизайнерне имеет ничего общего при разборе Load-Event или Constructor.Он все еще падает.

Кто-нибудь знает, что я могу сделать, чтобы предотвратить сбой Visual Studio и правильное отображение пользовательского элемента управления в конструкторе форм?

Проект, содержащий элемент управления пользователя, также ссылается на некоторые пользовательскиебиблиотеки и библиотечный проект.Я не знаю, может ли проблема быть с этим связана.

Ответы [ 3 ]

3 голосов
/ 11 августа 2011

Решил как-то свою проблему ...

Каким-то образом, пытаясь отладить режим конструктора, я обманул себя.

Установка Debugger.Break () вLoad-Event была очень плохой идеей при попытке открыть форму, содержащую пользовательский элемент управления в режиме конструктора, потому что, если вы не отлаживаете Visual Studio с другим экземпляром Visual Studio, тогда Debugger.Break () будетостановите приложение и, следовательно, произойдет аварийное завершение экземпляра Visual Studio.

В конце концов, используя свойство DesignerMode пользовательского элемента управления, я смог помешать конструктору выполнить инициализацию моей многопоточности. Объекты Timer могут решить проблемувот так.

1 голос
/ 08 мая 2014

У меня была такая же проблема (VS 2005), и помеченный ответ также не работал для меня.Я наконец смог решить эту проблему, удалив папки «obj» и «bin» в моем решении, а затем перестроив проект в режиме выпуска.Я надеюсь, что это помогает всем, кто имеет эту проблему.

0 голосов
/ 08 декабря 2015

В моей проблеме все решение зависало каждый раз, когда я открывал его, из-за режима разработки, открывающего файл виновности каждый раз, когда я открывал решение, и, таким образом, приводило к сбою всего решения, оно могло быть вызвано пользовательскими элементами управления, но я не могНет доступа к решению, чтобы решить.

Таким образом, я нашел альтернативный способ, позволяющий мне просто вернуться к своему кодированию. Он не включал в себя глубокое углубление в отладку системных событий, я думаю, что это может помочь всем уровням пользователя, следовательно, публикации.

Я открыл файл aspx вне решения, буквально просто файл кода внешнего интерфейса, это можно сделать в Блокноте или любом текстовом редакторе, включая VS.Закомментировал весь код (java-код не имел значения, так как ничто его не вызывает) Сохранил файл и закрыл.Повторно открыл решение.Несмотря на то, что дизайнерское представление открылось, на этот раз оно не вылетело, так как обрабатывать было нечего.Затем я раскомментировал код в разделах, различные объемы кода, 20 строк, 100 строк ... каждый раз возвращаясь к представлению дизайнера, чтобы проверить, не произойдет ли это.Когда я закончил (без сбоев!), Я смог продолжить с того места, где остановился.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...