Пример #1
0
        /// <summary>
        /// Starts to cancel the current request.
        /// </summary>
        public void BeginCancel()
        {
            lock (_dataMonitor)
            {
                if (_state == BuildRequestEntryState.Waiting)
                {
                    if (_outstandingResults == null && _outstandingRequests != null)
                    {
                        _outstandingResults = new Dictionary <int, BuildResult>(_outstandingRequests.Count);
                    }

                    if (_outstandingRequests != null)
                    {
                        foreach (KeyValuePair <int, BuildRequest> requestEntry in _outstandingRequests)
                        {
                            _outstandingResults[requestEntry.Key] = new BuildResult(requestEntry.Value, new BuildAbortedException());
                        }
                    }

                    if (_unresolvedConfigurations != null && _outstandingResults != null)
                    {
                        foreach (List <BuildRequest> requests in _unresolvedConfigurations.Values)
                        {
                            foreach (BuildRequest request in requests)
                            {
                                _outstandingResults[request.NodeRequestId] = new BuildResult(request, new BuildAbortedException());
                            }
                        }
                    }

                    _unresolvedConfigurations = null;
                    _outstandingRequests      = null;
                    ChangeState(BuildRequestEntryState.Ready);
                }
            }

            if (null != _requestBuilder)
            {
                _requestBuilder.BeginCancel();
            }
        }