Я работаю над приложением SharePoint, которое поддерживает импорт нескольких документов за одну операцию. У меня также есть обработчик события ItemAdded, который выполняет базовое обслуживание метаданных элемента. Это событие запускается как для импортированных документов, так и вручную. Последний фрагмент головоломки - это функция пакетной операции, которую я реализовал, чтобы запустить рабочий процесс и обновить другое поле метаданных.Sharepoint COMException 0x81020037
Я могу вызвать COMException 0x81020037, извлекая данные файла SPListItem. Этот файл является только формой InfoPath/XML-документом. Я могу изменить XML и успешно вернуть его обратно в SPListItem. Когда я сразу же запускаю пользовательскую функцию и изменяю метаданные, она иногда вызывает ошибку COM.
Сообщение об ошибке в основном указывает, что файл был изменен другим потоком. Казалось бы, событие ItemAdded все еще записывает файл обратно в базу данных, в то время как пользовательская функция меняет метаданные. Я попытался установить задержки и ошибки, чтобы попытаться обнаружить, что SPListItem безопасно модифицировать с небольшим успехом.
Есть ли способ узнать, имеет ли другой поток блокировку документа?