Rubberduck.Parsing.VBA.RubberduckParser.Cancel C# (CSharp) Method

Cancel() public method

public Cancel ( VBComponent component = null ) : void
component VBComponent
return void
        public void Cancel(VBComponent component = null)
        {
            lock (_central)
            lock (_resolverTokenSource)
            {
                if (component == null)
                {
                    _central.Cancel(false);

                    _central.Dispose();
                    _central = new CancellationTokenSource();
                    _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
                }
                else
                {
                    _resolverTokenSource.Cancel(false);
                    _resolverTokenSource.Dispose();

                    _resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
                    Tuple<Task, CancellationTokenSource> result;
                    if (_currentTasks.TryGetValue(component, out result))
                    {
                        result.Item2.Cancel(false);
                        result.Item2.Dispose();
                    }
                }
            }
        }