我正在开发一个支持在单个操作中导入多个文档的 SharePoint 应用程序。我还有一个 ItemAdded 事件处理程序,它执行项目元数据的一些基本维护。导入的文档和手动创建的文档都会触发此事件。难题的最后一块是我实现的批处理操作功能,以启动工作流并更新另一个元数据字段。
我可以通过提取 SPListItem 的文件数据来导致 COMException 0x81020037。此文件只是一个 InfoPath 表单/XML 文档。我能够修改 XML 并成功地将其推回 SPListItem。当我之后立即启动自定义功能并修改元数据时,它偶尔会导致 COM 错误。
该错误消息基本上表明该文件已被另一个线程修改。似乎 ItemAdded 事件仍在将文件写回数据库,而自定义功能正在更改元数据。我尝试过延迟和错误捕获循环,以尝试检测 SPListItem 可以安全修改但收效甚微。
有没有办法判断另一个线程是否锁定了文档?