diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Workspace.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Workspace.cs index f9b2a5dc131..7a7472e1d23 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Workspace.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed.VS/ProjectSystem/VS/LanguageServices/Workspace.cs @@ -538,28 +538,34 @@ private static IComparable GetConfiguredProjectVersion(IProjectValueVersions upd return update.DataSourceVersions[ProjectDataSources.ConfiguredProjectVersion]; } - public async Task WriteAsync(Func action, CancellationToken cancellationToken) + public Task WriteAsync(Func action, CancellationToken cancellationToken) { Requires.NotNull(action); - Verify.NotDisposed(this); cancellationToken = CancellationTokenExtensions.CombineWith(_unloadCancellationToken, cancellationToken).Token; - await WhenContextCreated(cancellationToken); + return ExecuteUnderLockAsync(async _ => + { + await WhenContextCreated(cancellationToken); - await ExecuteUnderLockAsync(_ => action(this), cancellationToken); + await action(this); + }, + cancellationToken); } - public async Task WriteAsync(Func> action, CancellationToken cancellationToken) + public Task WriteAsync(Func> action, CancellationToken cancellationToken) { Requires.NotNull(action); - Verify.NotDisposed(this); cancellationToken = CancellationTokenExtensions.CombineWith(_unloadCancellationToken, cancellationToken).Token; - await WhenContextCreated(cancellationToken); + return ExecuteUnderLockAsync(async _ => + { + await WhenContextCreated(cancellationToken); - return await ExecuteUnderLockAsync(_ => action(this), cancellationToken); + return await action(this); + }, + cancellationToken); } private async Task WhenContextCreated(CancellationToken cancellationToken)