我应该处置spweb或splist吗?
-
16-10-2019 - |
题
我正在用一个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
语句有点句法糖,但是我更喜欢使用它,因为它可以确保对象始终正确处理,并且不需要明确的代码来确保发生这种情况。