关于事件的疑问 窗体A和B,在A中自定义了事件EventA,并在其中触发,在窗体B中向事件EventA注册了处理方法methodB。假设此后窗体B的实例就被销毁了,我的疑问是:从委托的基本概念可以知道,B虽然已经销毁了,之前注册的方法methodB应该是仍然存在、仍然有效的。那么,如果此时窗体A触发了事件EventA,程序还会执行方法methodB吗?或者说程序会崩溃掉?望高手指教,解释下其中的道理,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 刚才写了一段代码,实际测试了一下。 void methodB() { this.Text = "OK"; this.Show(); }结果发现程序确实在B销毁之后,仍然会去执行方法,但是语句this.Text = "OK";正常,而语句this.Show();则会报对象不存在的错误。怎么解释呢?盼高手出现。 B根本不可能被GC真正销毁,因为还有其它对象的属性引用它呢。 如果生命期不一样,那么B在结束之前(Closing时),就应该去到 EventA 执行 -= 操作了。通常都是宿主程序是客户,它装载了一个服务对象,然后向服务对象注册事件回调。然后它可能清除服务对象。也就是说,通常客户程序的生命期并不是短命的。 不难想,就应该是这样,因为有引用,GC不会回收,但你已经Close了,再Show的话会报错。你Close后再Show应该也会报同样的错误。 WebForm图片问题 数据库数据类型~~ 有关Linq的问题 reportviewer无法显示子报表的问题 如何在一个 picbox 上通过鼠标画出虚线来选择 picbox 上的内容。 datagridView的数据绑定问题 BBclass Derive from Bclass == BBclass inherit Bclass ? C#中怎么读写计算机总线,比如ISA 我自己做的一个小程序,谁能帮我看一下,有什么不好的地方,应该改进的地方,请大家帮忙,给我建议。谢谢 用c# 编写一个小型超市管理系统不使用数据库 线程的问题 迫切需求一个WinForm中实现Gamma曲线设置的控件
{
this.Text = "OK";
this.Show();
}结果发现程序确实在B销毁之后,仍然会去执行方法,但是语句this.Text = "OK";正常,而语句this.Show();则会报对象不存在的错误。
怎么解释呢?盼高手出现。
B根本不可能被GC真正销毁,因为还有其它对象的属性引用它呢。
你Close后再Show应该也会报同样的错误。