static Task <HostSessionStartAnalysisScope> getSessionAnalysisScopeTaskSlow(AnalyzerExecutionContext context, AnalyzerExecutor executor) { return(Task.Run(() => { var sessionScope = new HostSessionStartAnalysisScope(); executor.ExecuteInitializeMethod(context._analyzer, sessionScope); return sessionScope; }, executor.CancellationToken)); }
private Task <HostSessionStartAnalysisScope> GetSessionAnalysisScopeCoreAsync( DiagnosticAnalyzer analyzer, AnalyzerExecutor analyzerExecutor) { Func <DiagnosticAnalyzer, Task <HostSessionStartAnalysisScope> > getTask = a => { return(Task.Run(() => { var sessionScope = new HostSessionStartAnalysisScope(); analyzerExecutor.ExecuteInitializeMethod(a, sessionScope); return sessionScope; }, analyzerExecutor.CancellationToken)); }; return(_sessionScopeMap.GetOrAdd(analyzer, getTask)); }
private Task <HostSessionStartAnalysisScope> GetSessionAnalysisScopeCoreAsync( DiagnosticAnalyzer analyzer, AnalyzerExecutor analyzerExecutor) { Func <DiagnosticAnalyzer, Task <HostSessionStartAnalysisScope> > getTask = a => { return(Task.Run(() => { var sessionScope = new HostSessionStartAnalysisScope(); analyzerExecutor.ExecuteInitializeMethod(a, sessionScope); return sessionScope; }, analyzerExecutor.CancellationToken)); }; var callback = new ConditionalWeakTable <DiagnosticAnalyzer, Task <HostSessionStartAnalysisScope> > .CreateValueCallback(getTask); return(_sessionScopeMap.GetValue(analyzer, callback)); }
public Task <HostSessionStartAnalysisScope> GetSessionAnalysisScopeTask(AnalyzerExecutor analyzerExecutor) { lock (_gate) { Task <HostSessionStartAnalysisScope> task; if (_lazySessionScopeTask != null) { return(_lazySessionScopeTask); } task = Task.Run(() => { var sessionScope = new HostSessionStartAnalysisScope(); analyzerExecutor.ExecuteInitializeMethod(_analyzer, sessionScope); return(sessionScope); }, analyzerExecutor.CancellationToken); _lazySessionScopeTask = task; return(task); } }
private Task <HostSessionStartAnalysisScope> GetSessionAnalysisScopeTask_NoLock( DiagnosticAnalyzer analyzer, AnalyzerExecutor analyzerExecutor) { Task <HostSessionStartAnalysisScope> task; if (_sessionScopeMap.TryGetValue(analyzer, out task)) { return(task); } task = Task.Run(() => { var sessionScope = new HostSessionStartAnalysisScope(); analyzerExecutor.ExecuteInitializeMethod(analyzer, sessionScope); return(sessionScope); }, analyzerExecutor.CancellationToken); _sessionScopeMap.Add(analyzer, task); return(task); }