下面是同事编写的一些示例代码。我觉得这显然是错误的,但我想确认一下。一个对象是否应该在其自己的方法中调用自己的Dispose()方法?在我看来,只有对象的所有者/创建者在完成对象后才应该调用Dispose()而不是对象本身。
这是一个.asmx Web 方法,在完成时会调用自己的Dispose()。(它是 Web 方法可能与一般问题无关) 在我们的代码库中,有时会在其他 Web 服务方法中实例化 Web 服务类,然后调用它们的方法。如果我的代码这样做来调用此方法,当方法返回时对象就“失效”了,我就不能再使用这个对象了。
[WebMethod]
public string MyWebMethod()
{
try
{
return doSomething();
}
catch(Exception exception)
{
return string.Empty;
}
finally
{
Dispose(true);
}
}
更新: