Sharepoint 等待完成上传

Sharepoint 等待完成上传,sharepoint,file-upload,event-receiver,Sharepoint,File Upload,Event Receiver,我编写了一个程序,使用CSOM将多个文件写入SharePoint列表: foreach (file in myFiles) { UploadFileToSharePoint(file.dataq, context, url+ file.name); } UploadFileToSharePoint(dummy, context, url+"finish.txt"); public static void UploadFileToSharePoint(Byte[] fileStrea

我编写了一个程序,使用CSOM将多个文件写入SharePoint列表:

foreach (file in myFiles) {
  UploadFileToSharePoint(file.dataq, context, url+ file.name);
}
UploadFileToSharePoint(dummy, context, url+"finish.txt");
     public static void UploadFileToSharePoint(Byte[] fileStream, ClientContext cCtx, String destUrl)
        {
             using (MemoryStream stream = new MemoryStream(fileStream))
            {
                Microsoft.SharePoint.Client.File.SaveBinaryDirect(cCtx, destUrl, stream, true);
            }
        }
如您所见,将N个文件上载到目标文件夹后,将上载最后一个名为“finish.txt”的文件。现在,我有一个事件接收器,用于检查是否上载了最后一个文件:

public override void ItemAdded(SPItemEventProperties properties)
        {
            try
            {
                if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)
                {
                    if (properties.ListItem.File != null && properties.ListItem.File.ParentFolder != null)
                    {
                        if (properties.ListItem.File.Name.Contains("finish.txt"))
                        {
                            // last file inside folder
                            AnalyzeFolder(properties.ListItem);
                        }
                    }
                }
                base.ItemAdded(properties);
            }
偶尔我会收到一个错误

移动文件时出错:Microsoft.SharePoint.SPException:保存冲突。 您的更改与其他用户同时进行的更改冲突。如果 要应用更改,请在Web浏览器中单击“上一步”, 刷新页面,然后重新提交更改。--> System.Runtime.InteropServices.COMException:保存冲突。你的 更改与其他用户同时进行的更改冲突

我猜这是因为最后一个文件是在其他文件上传完成之前上传的


如何确保在上载最后一个文件之前完成所有上载以防止出现错误?

这并不是我想要的,而是通过添加

<Synchronization>Synchronous</Synchronization>
同步
elements.xml
解决了这个问题


(我不会将此标记为答案,因为最初我不想让事件接收器同步,而是等待其他事件。因此,如果有人有更好的答案:请随意发布)

这并不是我想要的,而是通过添加

<Synchronization>Synchronous</Synchronization>
同步
elements.xml
解决了这个问题

(我不会将此标记为答案,因为最初我不想让事件接收器同步,而是等待其他事件。因此,如果有人有更好的答案:请随意发布)