/// <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(); } }