Frage

ich habe ein ItemUpdated Ereignisempfänger in einer Bibliothek. Einige ziemlich grundlegende Logik. Hier ist der Kern von dem, was ich tue:

SPWeb web = properties.Web;

SPContentTypeId ParentCT_Id = web.AvailableContentTypes["Some Content Type"].Id;

if (ParentCT_Id != null)
{
    if (properties.ListItem.ContentTypeId.IsChildOf(ParentCT_Id))
    {
        if (properties.ListItem[RECORD_END_DATE] != null)
        {
            SPListItem item = properties.ListItem;

            item.File.CheckOut();

            DateTime endDate = (DateTime)item[RECORD_END_DATE];
            item[RECORD_YEAR_END_DATE] = string.Format("12/31/{0}", endDate.Year.ToString());
            item.UpdateOverwriteVersion();

            item.File.CheckIn(RECORD_YEAR_END_DATE + " has been updated");
        }
    }
}

Ich frage mich, ob ich meine entsorgen muss web Objekt hier, das ich erstellt habe. Ich bekomme 6 Einträge im ULS -Protokoll:

An SPRequest object was not disposed before the end of this thread. To avoid wasting system resources, dispose of this object or its parent (such as an SPSite or SPWeb) as soon as you are done using it. This object will now be disposed.

Wie sollten SPWEB -Objekte in einem Ereignisempfänger entsorgt werden, wenn überhaupt? Ich habe sogar versucht, das Putschen zu setzen web.Dispose() Am Ende, aber die Einträge werden immer noch auftauchen.

Bearbeiten 1

Ich erwähnte, dass es 6 Einträge in den Protokollen gibt, und ich glaube, das entspricht der Anzahl der Breakpoints, die ich getroffen habe. Nicht alle 6 davon würden es aufgrund einer logischen Logik zum Codeblock oben schaffen. Sie instanziieren nie eine SPWeb Objekt.

War es hilfreich?

Lösung

Stellen Sie sicher, dass Sie die Ereignisfeuerin in Ihrem Ereignisempfänger deaktivieren. Andernfalls wird das Ereignis jedes Mal ausgelöst, wenn Sie item.updateOverwriteVersion anrufen. Das Speicherleck kann auftreten, wenn SharePoint diese Rekursion stoppt.

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