Ich arbeite an einer SharePoint-Anwendung, die das Importieren mehrerer Dokumente in einem einzigen Vorgang unterstützt. Ich habe auch einen ItemAdded-Event-Handler, der eine grundlegende Wartung der Item-Metadaten durchführt. Dieses Ereignis wird sowohl für importierte als auch für manuell erstellte Dokumente ausgelöst. Der letzte Teil des Puzzles ist eine Stapelverarbeitungsfunktion, die ich implementiert habe, um einen Workflow zu starten und ein weiteres Metadatenfeld zu aktualisieren.Sharepoint COMException 0x81020037
Ich bin in der Lage, eine COMException 0x81020037 durch Extrahieren der Dateidaten eines SPListItem zu verursachen. Diese Datei ist nur ein InfoPath-Formular/XML-Dokument. Ich bin in der Lage, das XML zu modifizieren und erfolgreich zurück in das SPListItem zu schieben. Wenn ich das benutzerdefinierte Feature sofort danach abfeuern und Metadaten ändern, verursacht es gelegentlich den COM-Fehler.
Die Fehlermeldung zeigt grundsätzlich an, dass die Datei von einem anderen Thread geändert wurde. Es scheint, dass das ItemAdded-Ereignis die Datei weiterhin in die Datenbank schreibt, während die benutzerdefinierte Funktion die Metadaten ändert. Ich habe versucht, Verzögerungen und Fehler auffangende Schleifen einzuführen, um zu versuchen, zu erkennen, dass das SPListItem mit wenig Erfolg sicher zu modifizieren ist.
Gibt es eine Möglichkeit zu sagen, ob ein anderer Thread eine Sperre für ein Dokument hat?