Je travaille sur une application SharePoint qui prend en charge l'importation de plusieurs documents en une seule opération. J'ai également un gestionnaire d'événement ItemAdded qui effectue une maintenance de base des métadonnées de l'élément. Cet événement se déclenche à la fois pour les documents importés et ceux créés manuellement. La dernière pièce du puzzle est une fonctionnalité de traitement par lots que j'ai implémentée pour lancer un flux de travail et mettre à jour un autre champ de métadonnées.Sharepoint COMException 0x81020037
Je suis capable de provoquer une exception COMException 0x81020037 en extrayant les données de fichier d'un SPListItem. Ce fichier est juste un formulaire InfoPath/document XML. Je suis capable de modifier le XML et de le repousser avec succès dans le SPListItem. Lorsque je déclenche la fonction personnalisée immédiatement après et modifiez les métadonnées, il provoque occasionnellement l'erreur COM.
Le message d'erreur indique essentiellement que le fichier a été modifié par un autre thread. Il semblerait que l'événement ItemAdded écrit toujours le fichier dans la base de données pendant que la fonction personnalisée modifie les métadonnées. J'ai essayé de mettre en retard et de rattraper les boucles d'erreur pour essayer de détecter que le SPListItem est sûr de modifier avec peu de succès.
Y at-il un moyen de savoir si un autre thread a un verrou sur un document?