这里涉及到C#垃圾回收的问题:
C#垃圾回收是.NET运行库的一部分。垃圾回收器管理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的垃圾回收器的制约。C#垃圾回收器可以确定运行垃圾回收的***时间,自动进行C#垃圾回收。然而垃圾回收的一个产物是:C# 对象没有确定性毁坏。所以会出现对象child已被销毁,但又不为null,访问时产生ObjectDisposedException异常。
方法一:
修改子窗体的构造函数
- publicChildForm(){
- //.........
- this.Disposed+=newSystem.EventHandler(Form_Disposed)
- }
- //然后事件Form_Disposed的处理函数
- privatevoidForm_Disposed(objectsender,EventArgse)
- {
- Child=null;
- }
方法二:
重写ChildForm的OnClosed方法
- ProtectedvoidOnClosed(EventArgse){
- base.OnClosed(e);
- child=null;
- }
当然可能有其他的方法,各位看客有兴趣的话补充一下。另外有叙述不当的地方,请多多指教,在下感激不尽。
【编辑推荐】