从SPContext获取对象时,我应该使用“using”吗?

时间:2010-12-03 19:00:13

标签: sharepoint

我目前正以这种方式获得SPListItemCollection:

SPContext.Current.Web.List("Multimedia").GetItems(query)

根据Microsoft文章,“SPContext对象由SharePoint框架管理,不应在代码中明确处理。”

我的问题是 - 我应该将上述代码包含在使用块中吗?或者我不应该,因为它来自SPContext对象?谢谢。

5 个答案:

答案 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

Example section - Microsoft.SharePoint.SPSite.OpenWeb() method

答案 2 :(得分:2)

您不应该丢弃从SPContext获得的SPWeb对象,实际上这样做可能会导致错误,尤其是在SP 2010上

答案 3 :(得分:1)

如果它实现了IDisposable并且你自己创建了,那么你必须处理它。它不仅适用于SharePoint开发。通常情况下,如果您对可以使用的任何对象的回答是肯定的,那么您应该将其处理掉(或使用使用

答案 4 :(得分:1)

请记住针对您的代码运行官方SharePoint Dispose Checker。它会发现很多丢失的处置。

  

SPDisposeCheck是一款可以帮助您的工具   检查使用该程序集的程序集   SharePoint API,以便您可以构建   更好的代码。它提供援助   正确处置某些   SharePoint对象可以帮助您关注   发表最佳实践。这个工具可能   不显示你的所有内存泄漏   码。建议进一步调查   如果你继续遇到问题。