【发布时间】:2013-09-23 14:39:14
【问题描述】:
我看到一些其他帖子讨论了相同的问题,但大多数都使用多线程或计时器,这里不是这种情况。
我正在使用一个简单的 VB.NET (.net 4.0) 桌面应用程序,其 MenuStrip 包含标准 File > Exit 项目。 File > Exit 项的代码就是Me.Close()。通过鼠标或使用键盘快捷键 (Alt + F, X) 单击项目会引发以下异常:
{"Cannot access a disposed object. Object name: 'ToolStripDropDownMenu'."}
有趣的是,通过Alt + F4 序列或窗口的关闭按钮关闭同一个应用程序运行顺利。
我检查了堆栈跟踪,似乎它正在尝试在应用程序关闭后创建该菜单项的句柄。任何见解将不胜感激。
【问题讨论】:
-
仔细检查您是否没有处理关闭事件或类似事件的代码。查看用户代码方法的堆栈跟踪。
-
我详细检查了堆栈跟踪,没有属于我的代码的行。
-
如果 File->Exit 应该关闭应用程序,请尝试
Application.Exit。听起来表单关闭/销毁发生了,然后应用程序退出代码尝试再次执行此操作。 -
有趣的是,
Application.Exit可以正常工作。想知道... :| -
看起来您正试图在 ToolStrip 被处置后使用它...调用堆栈是什么样的?它应该向您显示正在尝试访问它的内容。我猜是某种事件。你能把它精简成一个简单的例子来复制问题并发布代码吗?
标签: .net vb.net winforms exception