Frage

Ist es notwendig, die Site- und Webobjekte im folgenden Code zu entsorgen? Wenn ja, wie mache ich das?

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Dim site As New SPSite(SPContext.Current.Web.Url)
    Dim web As SPWeb = site.OpenWeb()
    web.AllowUnsafeUpdates = True
    Dim lPmr As SPList = web.Lists("NombreList")
    Dim oQuery As New SPQuery()
    Dim itemCollectionPMR As SPListItemCollection

    oQuery = New SPQuery()
    oQuery.Query = ""
    itemCollectionPMR = lPmr.GetItems(oQuery)

 ........        

 End Sub
War es hilfreich?

Lösung

James und Toni sind absolut korrekt, haben aber das offensichtliche IMHO übersehen - Ihr Code hat einen tieferen Fehler, und wenn Sie dies behoben haben, ist es nicht erforderlich, die Objekte zu entsorgen.

Sie sollten (wo möglich) die SPWEB- und Sp -Site -Objekte von spcontext verwenden - sie werden bereits von der SharePoint -Web -Teil -Infrastruktur für Sie erstellt, und es ist effizienter, diese zu verwenden, als Ihre eigenen zu erstellen.

In Ihrem Code verwenden Sie bereits einen von ihnen, um die aktuelle Web -URL zu erhalten, aber dann Ihre eigene Website und Ihr Web zu erstellen - ziemlich ineffizient und nicht erforderlich.

Also statt

Dim site As New SPSite(SPContext.Current.Web.Url)
Dim web As SPWeb = site.OpenWeb()

Sie sollten gerade verwenden

Dim web As SPWeb = SPContext.Current.Web

Wenn Sie Sp -Site/SPWEB von spcontext verwenden, anstatt Ihre eigenen zu erstellen, sollten Sie sie nicht entsorgen (Sie haben sie nicht erstellt, lassen Sie sie also in Ruhe)

Sehen MSDN - Best Practices: Verwendung von verfügbaren Windows SharePoint Services -Objekten

SPCONTEXT -Objekte werden vom SharePoint -Framework verwaltet und sollten nicht ausdrücklich in Ihrem Code entsorgt werden. Dies gilt auch für die von spcontext.sit, spcontext.current.sites, spcontext.web und spcontext.current.web zurückgegebenen Sp -und spcontext.current.web.

Andere Tipps

Ja, Sie müssen SPWEBs entsorgen, die über sp -site.openweb () erstellt wurden.

Um es zu entsorgen, Call Web.Dison (), wenn Sie in der Methode fertig sind.

Sie können auch die Verwendung der Verwendung von Anweisung zum gleichen Effekt verwenden, ohne direkt aufzuteilen () aufzurufen ()

Using site As New SPSite(SPContext.Current.Web.Url)
  Using web As SPWeb = site.OpenWeb()
    web.AllowUnsafeUpdates = True
    Dim lPmr As SPList = web.Lists("NombreList")
    Dim oQuery As New SPQuery()
    Dim itemCollectionPMR As SPListItemCollection

    oQuery = New SPQuery()
    oQuery.Query = ""
    itemCollectionPMR = lPmr.GetItems(oQuery)
  End Using
End Using

+1 James

Sie sollten auch versuchen zu verwenden SharePoint entsorgen das Checker -Tool In Ihren Projekten analysieren Sie Ihren Code auf potenzielle Speicherlecks und die Anwendung von Best Practices.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top