我在一个delegate上面绑定一个对象的实例方法之后,那么这个对象有没有可能被释放和垃圾收集呢??
比如,有如下代码CTest ct = new CTest() // 这是一个类,里面有个叫做CTPrint的实例方法MyDelType d = new MyDelType(ct.CTPrint);
d();ct = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();d();其中我进行了一个垃圾收集,按理说在将ct=null之后ct不是应该被垃圾回收的吗??难道是因为delegate引用到他的原因??
谢谢
比如,有如下代码CTest ct = new CTest() // 这是一个类,里面有个叫做CTPrint的实例方法MyDelType d = new MyDelType(ct.CTPrint);
d();ct = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();d();其中我进行了一个垃圾收集,按理说在将ct=null之后ct不是应该被垃圾回收的吗??难道是因为delegate引用到他的原因??
谢谢
不过目前的情况是,绑定之后就不会释放了
谢谢你提供的意见
不过我不是很清楚我实现IDisposable有什么作用,我这个类的内部其实并没有什么东西需要释放的,我想释放掉的其实这个实例本身占据的内存。
另外我记得clr via c#里面好像有个用GC.Collect()调用绑定到Timer对象的例子,不清楚他那个和我这有什么不同呢??谢谢各位
是的 就看有引用时GC.Collect()是否能释放或者立即释放了。