我目前正以这种方式获得SPListItemCollection:
SPContext.Current.Web.List("Multimedia").GetItems(query)
根据Microsoft文章,“SPContext对象由SharePoint框架管理,不应在代码中明确处理。”
我的问题是 - 我应该将上述代码包含在使用块中吗?或者我不应该,因为它来自SPContext对象?谢谢。
答案 0 :(得分:5)
它甚至不是关于SPContext - SPListItemCollection没有实现IDisposable并且无法处理。
除非我没有正确地回答你的问题?
答案 1 :(得分:5)
这个问题已经得到解答,但我强烈建议每个面向到Dispose()
或不到Dispose()
困境的SharePoint开发人员发表SharePoint 2007 and WSS 3.0 Dispose Patterns by Example文章。
这篇文章非常详细,代码示例很棒 - 下面的截图显示了如果你不读它会错过的内容:
示例部分 - Microsoft.SharePoint.SPSite.OpenWeb() method:
答案 2 :(得分:2)
您不应该丢弃从SPContext获得的SPWeb对象,实际上这样做可能会导致错误,尤其是在SP 2010上
答案 3 :(得分:1)
如果它实现了IDisposable并且你自己创建了,那么你必须处理它。它不仅适用于SharePoint开发。通常情况下,如果您对可以使用的任何对象的回答是肯定的,那么您应该将其处理掉(或使用使用)
答案 4 :(得分:1)
请记住针对您的代码运行官方SharePoint Dispose Checker。它会发现很多丢失的处置。
SPDisposeCheck是一款可以帮助您的工具 检查使用该程序集的程序集 SharePoint API,以便您可以构建 更好的代码。它提供援助 正确处置某些 SharePoint对象可以帮助您关注 发表最佳实践。这个工具可能 不显示你的所有内存泄漏 码。建议进一步调查 如果你继续遇到问题。