Frage

Ich schreibe einen Ereignisempfänger in einer Dokumentbibliothek, um eine neue Liste aus der hochgeladenen Excel-Datei zu erstellen. Es läuft auf ItemAdded () und itemupdated () Ereignis.

Bevor Sie eine Methode anrufen, um neue Elemente zur Liste hinzuzufügen /Merill.net/2008/02/effizient-delete-purge-all-Items-fromm-a-sharepoint-list/ "rel=" nofollow "> processbatchdata generasacodicetagpre.

cocessbatachdata ist etwas, was besser ist, aber das Problem nicht genau das Problem ist, dass während der Debuggin, sobald das Steuerelement die Leitung generiert, die GESTELLERACDICETAGCODE

Es dauert das Steuerelement wieder an den Bildschirm des Dokuments .

nicht in der Lage, nicht herauszufinden, ob es ein Thread-Problem ist, wenn ich diese Arbeit mache, wenn ich dazu mache, dass mein Putting-Thread irgendwann einschlafen, bis der Prozessbatch seinen Job beendet, und die Steuerung in die nächste Zeile.

Die vollständige Funktion sieht aus wie generasacodicetagpre.

Geeks Bitte zeigen Sie mich in die richtige Richtung. Ich schätze Sie wirklich, Hilfe und Zeit.

vishal

War es hilfreich?

Lösung

This is probably not the root cause of your performance issues, but part of it. Your code is written in a quite inefficient way, opening webs to the right and left and looking for the list multiple times. Something like this does the same thing but more efficiently:

If your feature is web scoped:

    var web = properties.Feature.Parent as SPWeb;

if site scoped

    var site = properties.Feature.Parent as SPSite;
    if(site == null) return;
    var web = site.OpenWeb(properties.WebUrl);

and as MdMazzotti pointed out you would actually need to dispose the web in this scenario, I would use the using statement, replace the last line with this:

using(var web = site.OpenWeb(properties.WebUrl)){

and add an extra } at the end of the following :

    if(web == null || !web.Exists) return;

    var list = web.Lists[listName]
    if (list != null && list.Items.Count > 0)
    {
        var deleteBatch = web.ProcessBatchData(BuildBatchDeleteCommand(list));
    }

    InsertIntoList(ExcelRecords, list.Items);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top