1 回の操作で複数のドキュメントのインポートをサポートする SharePoint アプリケーションに取り組んでいます。また、アイテム メタデータの基本的なメンテナンスを実行する ItemAdded イベント ハンドラーもあります。このイベントは、インポートされたドキュメントと手動で作成されたドキュメントの両方に対して発生します。パズルの最後のピースは、ワークフローを開始して別のメタデータ フィールドを更新するために実装したバッチ操作機能です。
SPListItem のファイル データを抽出することで、COMException 0x81020037 を発生させることができます。このファイルは単なる InfoPath フォーム/XML ドキュメントです。XML を変更して、SPListItem に正常にプッシュすることができました。その直後にカスタム機能を起動してメタデータを変更すると、時折 COM エラーが発生します。
エラーメッセージは基本的に、ファイルが別のスレッドによって変更されたことを示しています。カスタム機能がメタデータを変更している間、ItemAdded イベントはまだファイルをデータベースに書き戻しているようです。SPListItem が安全に変更できることを検出するために、遅延とエラー キャッチ ループを挿入しようとしましたが、ほとんど成功しませんでした。
別のスレッドがドキュメントをロックしているかどうかを確認する方法はありますか?