2013-09-23 5 views
1

Я вижу несколько других сообщений, посвященных одной и той же проблеме, но большинство из них используют многопоточность или таймеры, чего здесь нет.Не удается получить доступ к расположенному объекту. Имя объекта: «ToolStripDropDownMenu»

Я использую простое настольное приложение VB.NET (.net 4.0) с MenuStrip, содержащим стандартный элемент File > Exit. Код для File> Exit item - это просто Me.Close(). При нажатии на элемент с помощью мыши или с помощью комбинации клавиш (Alt + F, X) вызывает следующее исключение:

{"Cannot access a disposed object. Object name: 'ToolStripDropDownMenu'."} 

Интересно, что закрытие того же приложения через Alt + F4 последовательности или кнопки закрытия окна работает плавно.

Я проверил трассировку стека и, похоже, пытается создать дескриптор этого пункта меню ПОСЛЕ закрытия приложения. Любое понимание было бы очень оценено.

+0

Дважды проверьте, что у вас нет кода, который обрабатывает события закрытия или что-то в этом роде. Посмотрите на трассировку стека для методов пользовательского кода. –

+0

Я проверил трассировку стека подробно, и нет линии, принадлежащей моему коду. – dotNET

+3

Если File-> Exit должен закрыть приложение, попробуйте 'Application.Exit' вместо этого. Похоже, что форма close/destroy происходит, тогда код приложения Exit пытается сделать это снова. – Plutonix

ответ

1

У меня было что-то подобное, но не было уверенности в том, что вы закрываете форму или приложение, поэтому это началось как комментарий. Я думаю, что это отчасти зависит от того, есть ли у вас Enable NET application framework в проекте. ЕСЛИ вы это сделаете, я думаю, что Me.Close будет работать, если нет, Application.Exit требует (?) Для явного вызова.

Если File-> Exit должен закрыть приложение, вместо этого попробуйте Application.Exit. Похоже, что форма close/destroy происходит, тогда код приложения Exit пытается сделать это снова.

+0

Это исправило мою проблему. Для записи я использую структуру приложения. – dotNET

Смежные вопросы