Ejemplo n.º 1
0
        public IEnumerable <TfsChangesetWrapper> QueryChangesets(IEnumerable <TfsWorkItemWrapper> workItems, ITrackProgress trackProgress, CancellationToken cancelled = default(CancellationToken))
        {
            var results = new System.Collections.Concurrent.ConcurrentBag <TfsChangesetWrapper>();

            Parallel.ForEach(workItems,
                             (workItem, state) =>
            {
                if (Repository.Instance.TfsConnectionInfo.Uri == null)
                {
                    state.Stop();
                    return;
                }

                if (cancelled.IsCancellationRequested)
                {
                    state.Stop();
                    return;
                }
                trackProgress.Increment();
                foreach (var changeset in workItem.RelatedChangesets)
                {
                    trackProgress.ProgressInfo = String.Format("Processing work item #{0} ({1} related changesets)", workItem.TfsWorkItem.Id, workItem.RelatedChangesetCount);
                    results.Add(UpdateChangesetFromCache(new TfsChangesetWrapper(changeset)));
                }
            });
            cancelled.ThrowIfCancellationRequested();

            var resultList =
                results
                .GroupBy(item => item.TfsChangeset.Changeset.ChangesetId)
                .Select(item => item.First());

            return(resultList.ToList().AsEnumerable());
        }
Ejemplo n.º 2
0
        public IEnumerable <TfsWorkItemWrapper> QueryWorkItems(IEnumerable <TfsChangesetWrapper> changesets, ITrackProgress trackProgress, CancellationToken cancelled = default(CancellationToken))
        {
            var results = new System.Collections.Concurrent.ConcurrentBag <TfsWorkItemWrapper>();

            Parallel.ForEach(changesets,
                             (changeset, state) =>
            {
                if (Repository.Instance.TfsConnectionInfo.Uri == null)
                {
                    state.Stop();
                    return;
                }
                if (cancelled.IsCancellationRequested)
                {
                    state.Stop();
                    return;
                }
                foreach (var workItem in changeset.TfsChangeset.RelatedWorkItems)
                {
                    results.Add(UpdateWorkItemFromCache(new TfsWorkItemWrapper(workItem)));
                }
                trackProgress.Increment();
            });
            cancelled.ThrowIfCancellationRequested();

            var resultList =
                results
                .GroupBy(item => item.TfsWorkItem.Id)
                .Select(item => item.First());

            return(resultList.ToList().AsEnumerable());
        }