2016-03-14 4 views
0

Я написал программу, которая записывает несколько файлов в SharePoint-List с помощью CSOM:Дождитесь отделочными загрузки

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: Сохранить конфликт. Ваши изменения противоречат тем, которые были сделаны одновременно другим пользователем. Если вы хотите, чтобы ваши изменения были применены, нажмите «Назад» в своем веб-браузере, обновите страницу и повторите отправку изменений. ---> System.Runtime.InteropServices.COMException: Сохранить конфликт. Ваш изменяет конфликт с теми, которые сделаны одновременно другим пользователем.

Мое предположение заключается в том, что это происходит из-за того, что последний файл загружается перед загрузкой других файлов до их завершения.

Как я могу убедиться, что все закачки закончены, прежде чем я загружу последний файл, чтобы предотвратить эту ошибку?

ответ

0

Это не совсем то, что я хотел, но делает работу синхронные Event Receiver путем добавления

<Synchronization>Synchronous</Synchronization> 

к elements.xml решить эту проблему.

(Я не буду отмечать это как ответ, потому что изначально я не хотел иметь синхронный приемник событий, но ждать других событий. Поэтому, если у кого-то есть лучший ответ: не стесняйтесь публиковать его)

Смежные вопросы