diff --git a/src/Compilers/Core/AnalyzerDriver/AnalyzerManager.cs b/src/Compilers/Core/AnalyzerDriver/AnalyzerManager.cs index 4406b8fbc63b1..98b167bbc1ae0 100644 --- a/src/Compilers/Core/AnalyzerDriver/AnalyzerManager.cs +++ b/src/Compilers/Core/AnalyzerDriver/AnalyzerManager.cs @@ -50,15 +50,19 @@ private Task GetCompilationAnalysisScopeCoreA Func continueOnAnalyzerException, CancellationToken cancellationToken) { - var compilationActionsMap = _compilationScopeMap.GetOrCreateValue(compilation); - return compilationActionsMap.GetOrAdd(analyzer, - Task.Run(() => + Func> getTask = a => + { + return Task.Run(() => { var compilationAnalysisScope = new HostCompilationStartAnalysisScope(sessionScope); AnalyzerDriverHelper.ExecuteCompilationStartActions(sessionScope.CompilationStartActions, compilationAnalysisScope, compilation, analyzerOptions, addDiagnostic, continueOnAnalyzerException, cancellationToken); return compilationAnalysisScope; - }, cancellationToken)); + }, cancellationToken); + }; + + var compilationActionsMap = _compilationScopeMap.GetOrCreateValue(compilation); + return compilationActionsMap.GetOrAdd(analyzer, getTask); } private async Task GetCompilationAnalysisScopeAsync(