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); } }
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); }
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); }