代码改变世界

学习IDisposable,对于此中的不解……请高手指点

2009-09-25 11:25  Bruce.Zhang  阅读(401)  评论(1编辑  收藏  举报
      今天有时间了,学习了下IDisposable,在园子里看了不少文章,受益很多,在此先谢过各位大侠了,在Reflector里面看到了一个实现,自己感觉还不错,先copy出来,防止忘记啊,
Code
这个算做为备忘录吧。上面的代码可以防止重复释放,也加锁了,不会出现线程不安全的情况了,(我这样理解的,不知道对不)
可是我现在有个疑问了,对于if(disposing){GC.SuppressFinalize(this);}在这里,我们需要做的是释放托管资源,并告诉GC,不用再释放了。
http://www.cnblogs.com/michaelhuwei/archive/2007/12/28/1018646.html在这篇有提到对于一些托管资源的释放,像DataSet,需要手动释放。
现在问题来了,如果我们这里不手动释放DataSet这样的管托资源,会出现什么状况呢??GC还会在回收吗?如果会的话,SuppressFinalize不是请求系统不要调用指定对象的终结器的吗?还请各路高手不吝指教,谢谢了~