Cannot access a disposed object

System.ObjectDisposedException: Cannot access a disposed object.

Object name: 'XXXX'.

 

今天写C#窗体遇到这样的问题,报错在Application.Run(new frmMain())处,经过查找,终于找到原因了。

代码逻辑:假如有两个窗体A和B,A和B的TopMost均为true,A的Load事件中用ShowDialog模态打开B,,当B关闭窗体B时B的DialogResult为Cancel时关闭A。

 

运行程序,如期打开的是窗体B,设置B.DialogResult为Cancel关闭窗体B,返回A的Load事件里,调用Close关闭窗体A,这时出错了,如题。原因就是因为B的TopMost为True,把B的TopMost改成false就好了。具体C#底层怎么执行的我不知道,但好像TopMost为True时要经过很特殊的处理。

 

第一次写博客,分享一下

posted @ 2009-04-30 12:39  脱离语言  阅读(2085)  评论(0编辑  收藏  举报