1

我看到其他一些帖子讨论了相同的问题,但大多数都使用多线程或计时器,这里不是这种情况。

我正在使用一个MenuStrip包含标准File > Exit项目的简单 VB.NET (.net 4.0) 桌面应用程序。File > Exit 项的代码很简单Me.Close()。通过鼠标或使用键盘快捷键 ( ) 单击项目Alt + F, X会引发以下异常:

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

Alt + F4有趣的是,通过序列或窗口的关闭按钮关闭同一个应用程序可以顺利进行。

我检查了堆栈跟踪,似乎它正在尝试在应用程序关闭后创建该菜单项的句柄。任何见解将不胜感激。

4

1 回答 1

1

我也发生过类似的事情,但不确定您是在关闭表单还是应用程序,所以这是作为评论开始的。我认为这部分取决于您是否已Enable NET application framework签入该项目。如果你这样做,我认为 Me.Close 会起作用,如果不是,Application.Exit 需要 (?) 被显式调用。

如果 File->Exit 应该关闭应用程序,请尝试Application.Exit。听起来表单关闭/销毁发生了,然后应用程序退出代码尝试再次执行此操作。

于 2013-09-23T14:56:00.897 回答