0

我已经开发了 .net Web 服务应用程序,在此我是否需要在离开方法之前处理所有对象,或者它会自动由垃圾收集处理。

4

2 回答 2

1

任何实现IDisposable你需要处理的东西。任何其他对象将被自动收集。

最好的处理方式:

using (var item = new ADisposableClass())
{
   // Use the item here
}
// item will be disposed even if there was an error since it is inside "using"
于 2012-08-21T12:18:04.530 回答
0

实现的对象IDisposable告诉您在完成后显式调用其Dispose方法。这是因为它消耗的资源应该只保留尽可能短的时间。

Dispose调用释放对象使用的所有资源。在该Dispose方法的典型实现中,垃圾收集器在完成对象时将调用此方法的重载,这将处理任何非托管资源,例如文件句柄。但是此时通常不会释放托管资源;相反,他们也会等待垃圾收集器清理它们。

因此,您应该始终(不仅仅是在 Web 服务方法中)在完成处理此类对象时对其进行处理。using块是最简单的方法。

于 2012-08-21T12:21:06.887 回答