diff --git a/products/ASC.Files/Core/Services/WCFService/FileOperations/FileMoveCopyOperation.cs b/products/ASC.Files/Core/Services/WCFService/FileOperations/FileMoveCopyOperation.cs index 4265f34be1..a3e15fa04a 100644 --- a/products/ASC.Files/Core/Services/WCFService/FileOperations/FileMoveCopyOperation.cs +++ b/products/ASC.Files/Core/Services/WCFService/FileOperations/FileMoveCopyOperation.cs @@ -73,6 +73,8 @@ internal class FileMoveCopyOperationData : FileOperationData class FileMoveCopyOperation : FileOperation, T> { + private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1); + private readonly int _daoFolderId; private readonly string _thirdpartyFolderId; private readonly bool _copy; @@ -380,12 +382,18 @@ class FileMoveCopyOperation : FileOperation, T> } else { + await _semaphore.WaitAsync(); if (isRoom && toFolder.FolderType == FolderType.VirtualRooms) { + await _semaphore.WaitAsync(); await countRoomChecker.CheckAppend(); + newFolderId = await FolderDao.MoveFolderAsync(folder.Id, toFolderId, CancellationToken); + _semaphore.Release(); + } + else + { + newFolderId = await FolderDao.MoveFolderAsync(folder.Id, toFolderId, CancellationToken); } - - newFolderId = await FolderDao.MoveFolderAsync(folder.Id, toFolderId, CancellationToken); } newFolder = await folderDao.GetFolderAsync(newFolderId);