コード例 #1
0
 static Task <HostSessionStartAnalysisScope> getSessionAnalysisScopeTaskSlow(AnalyzerExecutionContext context, AnalyzerExecutor executor)
 {
     return(Task.Run(() =>
     {
         var sessionScope = new HostSessionStartAnalysisScope();
         executor.ExecuteInitializeMethod(context._analyzer, sessionScope);
         return sessionScope;
     }, executor.CancellationToken));
 }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
            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);
                }
            }
コード例 #5
0
ファイル: AnalyzerManager.cs プロジェクト: wuyong2k/roslyn
        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);
        }