private async Task NotifyCpsProjectSystemAsync( ProjectId projectId, IProjectItemDesignerTypeUpdateService updateService, IEnumerable <DesignerAttributeData> data, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); // We may have updates for many different configurations of the same logical project system project. // However, the project system only associates designer attributes with one of those projects. So just drop // the notifications for any sibling configurations. if (!_workspace.IsPrimaryProject(projectId)) { return; } // Broadcast all the information about all the documents in parallel to CPS. using var _ = ArrayBuilder <Task> .GetInstance(out var tasks); foreach (var info in data) { cancellationToken.ThrowIfCancellationRequested(); tasks.Add(NotifyCpsProjectSystemAsync(updateService, info, cancellationToken)); } await Task.WhenAll(tasks).ConfigureAwait(false); }