在阅读了Stefan Gossner关于处置对象的帖子和关于Cross method dispose patterns的这个问题之后,我发现我因不小心重新打开了一些 SPWeb 而感到内疚。我知道在 Stefan Gossner 的帖子中,他提到你应该在处理完任何子对象后处理 SPWeb。但是,微软文档提到缓存 SPListItemCollection 对象。下面的代码是否正确?返回的 SPListItemCollection 会重新打开一个 SPWeb 对象吗?有什么方法可以确定吗?
// is this correct????
private SPListItemCollection GetListItems()
{
SPListItemCollection items = null;
try
{
using (SPSite site = new SPSite(GetListSiteUrl()))
{
using (SPWeb web = site.OpenWeb())
{
// retrieve the list
SPList list = web.Lists[_ListName];
// more code to create the query...
items = list.GetItems(query);
}
}
}
catch (Exception e)
{
// log error
}
return items;
}
编辑 09/09/09
我主要指的是Stefan Grossner 的这部分帖子:
您应该在最后一次访问此对象的子对象后释放 SPWeb 或 SPSite 对象。
我相信他的意思是,如果我在处理掉我用来获取它的 SPWeb 后使用 SPListItemCollection ...... SPWeb 将自动重新打开。