我正在用一个spweb和许多分散做很多事情。如果我只是在 finally 该部分会处理我实例化的所有分散者吗? (顺便说一句,我了解 using, ,我应该实施 using 反而?)

有帮助吗?

解决方案

Splist物体无法处置。

其他提示

我建议安装和运行此工具以检查您是否正确处理对象: spdisposecheck

该规则很复杂,但是简而言之,您应该处理自己创建的任何物体 iDisposable 界面。

在SharePoint的背景下,这包括:

  • 任何 Spsite 您使用的对象使用 siteColl.OpenWeb(), ,返回 SPSiteCollection.Add, ,由 SPSiteCollection[] 索引操作员或以 SPSiteCollection foreach 环形
  • 任何 Spweb 对象从 SPSite.AllWebs.Add, SPWebCollection.Add, , 这 SPSite.AllWebs[] 索引操作员或以 SPSite.AllWebs foreach循环。

最佳实践:使用Technet上的一次性Windows SharePoint Service对象文章.

注意 Splist 不在此列表中(因为它没有实现 IDisposable, ,也不是 splist.rootweb (因为您没有创建rootweb对象,所以您只会获得对其的引用)。

请注意,如果您尝试使用,您的代码不太可能编译 Dispose 像这样的对象 SPList 那无法实现 IDisposable, ,因为该对象不会有 Dispose 方法。另一方面,如果您尝试处置,您将不会遇到错误 RootWeb, ,因为它是一个 SPWeb 带有A的对象 Dispose 方法 - 但是,如果您试图参考该网络或任何一个孩子,则在代码中使用该网络或任何一个孩子,则会引起问题。

using 语句有点句法糖,但是我更喜欢使用它,因为它可以确保对象始终正确处理,并且不需要明确的代码来确保发生这种情况。

许可以下: CC-BY-SA归因
scroll top