日期:2014-05-17  浏览次数:20404 次

请问asp.net何时该调用Dispose,释放资源??
请问asp.net何时该调用Dispose,释放资源

------解决方案--------------------
ls就不要再误导lz了。说得根本没有一点正确。

首先要明白的第一点是,Dispose() 方法只属于那些实现了 IDispose 接口的类。因此 Dispose() 可以释放内存这个说法就荒谬了,你让那些没有实现 IDispose 的类内牛满面。

我们知道 .NET 是自动垃圾回收的,回收内存根本不需要另外的方法,为什么一些类提供 Dispose() 方法呢?主要是释放内存以外的资源,比如非托管的内存、句柄、数据库连接、网络甚至外部设备。总之,不同的对象,释放的东西可能完全不同。

Dispose() 和 ASP.NET 完全没有关系,它属于那些实现了 IDispose 的类。如果一个类实现了 IDispose,那么你就要好好看看它的文档,上面会介绍如何使用,以及什么时候使用它。然而一些对象,出于防呆设计或者其他原因,不调用 Dispose() 也不会出现问题,或者只在特定情况下出问题,比如在池模式或者单键模式下,Dispose() 就不需要调用。所以还是要看文档。

最后,关于using,提供了对 Dispose() 调用的语法糖,这似乎是每个.NET程序员必备的知识,但是很遗憾,在论坛里面几乎没有几个人能说正确。我想没有耐心或者能力看懂MSDN的人,我也没有办法把他教会,反之也不需要我赘述,只是说ls的说法是典型的错误不要误导别人。
------解决方案--------------------
引用:
ls就不要再误导lz了。说得根本没有一点正确。


大家都是这样说的,
  ,现象,就也是这个样,(这样说 也是比喻说法而已,标准答案 并不见得谁都听得懂啊)
我们这样想,这样用,好象出没有 什么问题啊。(与标准答案不同而已)
 
你说那个 IDispose();的确,是有了这个接口的对象 ,才可以用dispose 方法,---这点我没说。