最新评论

子逸 2009-07-22 18:56
本来懂一点, 现在不懂了.
iTech 2009-02-25 09:07
恩,还不错!
Jonny Yu 2009-02-24 22:33
--引用-------------------------------------------------- 我的地盘我做主: 释放托管资源 感谢这位朋友指出的问题,确实像你所说的那样,如果这个类包含的字段在实现了IDispose的方法里面,对非托管资源进行了释放,如果吧_filed.Dispose(true)放在这里就是不合适的.应该把它放在清理非托管资源的区域. 那释放托管资源的地方应该写什么呢,我想这可能根据自己的代码逻辑来决定这里到底写些什么东西,比如在构造函数里面对事件进行了+=处理,那么在对应的这里就可以写事件的-=处理. 我是这样理解的,如果你觉得我的理解还是存在问题的话,希望阁下可以指点一二 再次感谢 -------------------------------------------------------- 我怎么觉得就是应该放在if block里面呢. 因为GC在执行Finalizer的时候次序是随机的,所以很有可能等到你这个对象的Finalizer被执行的时候, 其引用的对象早已被Finalize掉了,这样再次finalize可能会引起异常,当然异常发上在GC thread上,可能觉察不到.
我的地盘我做主 2009-02-24 22:05
海洋——海纳百川,有容乃大
我把代码放到Code里面折叠了一下,不知道你说的高亮是不是这个意思.
我的地盘我做主 2009-02-24 21:59
释放托管资源
感谢这位朋友指出的问题,确实像你所说的那样,如果这个类包含的字段在实现了IDispose的方法里面,对非托管资源进行了释放,如果吧_filed.Dispose(true)放在这里就是不合适的.应该把它放在清理非托管资源的区域.

那释放托管资源的地方应该写什么呢,我想这可能根据自己的代码逻辑来决定这里到底写些什么东西,比如在构造函数里面对事件进行了+=处理,那么在对应的这里就可以写事件的-=处理.
我是这样理解的,如果你觉得我的理解还是存在问题的话,希望阁下可以指点一二
再次感谢
海洋——海纳百川,有容乃大. 2009-02-24 21:07
谢谢分享。
建议博主highlight 一下代码。呵呵。
释放托管资源 2009-02-24 19:03
--引用--------------------------------------------------
我的地盘我做主: 如果这个类含有的字段实现了IDispose接口,我们可以在这个地方调用这个字段的Dispose()方法



if(isDisposing)



{



_filed.Dispose();



}


--------------------------------------------------------
那Finalize调用时,对象里面非托管对象不就没办法释放?
我的地盘我做主 2009-02-24 17:44
如果这个类含有的字段实现了IDispose接口,我们可以在这个地方调用这个字段的Dispose()方法

if(isDisposing)

{

_filed.Dispose();

}
lsjwzh 2009-02-24 17:44
感觉象anytao的原文哦
释放托管资源 2009-02-24 17:37
if(isDisposing)

{

//释放托管资源

}
请问如何释放托管资源
我的地盘我做主 2009-02-24 17:27
前两天刚换的主题,觉得挺酷的,不好意思,伤了大家的眼睛,我马上换个主题哈
深山老林 2009-02-24 16:40
这文章实在是没法读了。待哪天修行的时候,再来细细读来。
唉呀 2009-02-24 16:19
这颜色配的,太伤眼睛了。没办法看完。