Я написал программу, которая записывает несколько файлов в 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: Сохранить конфликт. Ваш изменяет конфликт с теми, которые сделаны одновременно другим пользователем.
Мое предположение заключается в том, что это происходит из-за того, что последний файл загружается перед загрузкой других файлов до их завершения.
Как я могу убедиться, что все закачки закончены, прежде чем я загружу последний файл, чтобы предотвратить эту ошибку?