예제 #1
0
 public async Task SynchronizeAssetsAsync(IEnumerable <Checksum> checksums, CancellationToken cancellationToken)
 {
     using (var pooledObject = SharedPools.Default <HashSet <Checksum> >().GetPooledObject())
     {
         AddIfNeeded(pooledObject.Object, checksums);
         await _assetService.SynchronizeAssetsAsync(pooledObject.Object, cancellationToken).ConfigureAwait(false);
     }
 }
예제 #2
0
            private async Task SynchronizeSolutionAsync(SolutionChecksumObject solutionChecksumObject, CancellationToken cancellationToken)
            {
                // get children of solution checksum object at once
                var solutionChecksums = new HashSet <Checksum>();

                AddIfNeeded(solutionChecksums, solutionChecksumObject.Children);
                await _assetService.SynchronizeAssetsAsync(solutionChecksums, cancellationToken).ConfigureAwait(false);
            }
예제 #3
0
        private async Task SynchronizeProjectAssets_NoLockAsync(IEnumerable <Checksum> projectChecksums, CancellationToken cancellationToken)
        {
            // get children of project checksum objects at once
            await SynchronizeProjectsAsync(projectChecksums, cancellationToken).ConfigureAwait(false);

            // get children of document checksum objects at once
            using var pooledObject = SharedPools.Default <HashSet <Checksum> >().GetPooledObject();
            var checksums = pooledObject.Object;

            foreach (var projectChecksum in projectChecksums)
            {
                var projectChecksumObject = await _assetService.GetAssetAsync <ProjectStateChecksums>(projectChecksum, cancellationToken).ConfigureAwait(false);

                await CollectChecksumChildrenAsync(checksums, projectChecksumObject.Documents, cancellationToken).ConfigureAwait(false);
                await CollectChecksumChildrenAsync(checksums, projectChecksumObject.AdditionalDocuments, cancellationToken).ConfigureAwait(false);
                await CollectChecksumChildrenAsync(checksums, projectChecksumObject.AnalyzerConfigDocuments, cancellationToken).ConfigureAwait(false);
            }

            await _assetService.SynchronizeAssetsAsync(checksums, cancellationToken).ConfigureAwait(false);
        }