private async Task ApplyProjectChangesUnderLockAsync(IProjectVersionedValue <IProjectSubscriptionUpdate> update, bool evaluation, CancellationToken cancellationToken) { IWorkspaceProjectContext context = _contextAccessor !.Context; context.StartBatch(); try { bool isActiveContext = _activeWorkspaceProjectContextTracker.IsActiveEditorContext(_contextAccessor.ContextId); if (evaluation) { await _applyChangesToWorkspaceContext !.Value.ApplyProjectEvaluationAsync(update, isActiveContext, cancellationToken); } else { await _applyChangesToWorkspaceContext !.Value.ApplyProjectBuildAsync(update, isActiveContext, cancellationToken); } } finally { context.EndBatch(); NotifyOutputDataCalculated(update.DataSourceVersions, evaluation); } await _applyChangesToWorkspaceContext.Value.ApplyProjectEndBatchAsync(update, cancellationToken); }