diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/LanguageServiceHost.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/LanguageServiceHost.cs index 21ae0953115..52c7ede3a66 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/LanguageServiceHost.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/LanguageServiceHost.cs @@ -132,7 +132,8 @@ protected override async Task InitializeCoreAsync(CancellationToken cancellation target: DataflowBlockFactory.CreateActionBlock>( update => OnSlicesChanged(update, cancellationToken), _unconfiguredProject, - ProjectFaultSeverity.LimitedFunctionality), + ProjectFaultSeverity.LimitedFunctionality, + "LanguageServiceHostSlices {0}"), linkOptions: DataflowOption.PropagateCompletion, cancellationToken: cancellationToken), diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Workspace.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Workspace.cs index eed4132188c..a4d616b4e70 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Workspace.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/LanguageServices/Workspace.cs @@ -134,6 +134,10 @@ protected override Task DisposeCoreUnderLockAsync(bool initialized) return Task.CompletedTask; } + /// + /// Adds an object that will be disposed along with this instance. + /// + /// The object to dispose when this object is disposed. public void ChainDisposal(IDisposable disposable) { Verify.NotDisposed(this); @@ -141,6 +145,23 @@ public void ChainDisposal(IDisposable disposable) _disposableBag.Add(disposable); } + /// + /// Integrates project updates into the workspace. + /// + /// + /// + /// This method must always receive an evaluation update first. After that point, + /// both evaluation and build updates may arrive in any order, so long as values + /// of each type are ordered correctly. + /// + /// + /// Calls must not overlap. This method is not thread-safe. This method is designed + /// to be called from a dataflow ActionBlock, which will serialize calls, so we + /// needn't perform any locking or protection here. + /// + /// + /// The project update to integrate. + /// A task that completes when the update has been integrated. internal async Task OnWorkspaceUpdateAsync(IProjectVersionedValue update) { Verify.NotDisposed(this);