void m_worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (m_disposeRequested) { Dispose(); return; } if (e.Error == null) { if (e.Result is VCServerPathRootViewModel) { VCServerPathRootViewModel rootNode = e.Result as VCServerPathRootViewModel; RootList.Add(rootNode); } else if (e.Result is VCServerPathNodeViewModel) { VCServerPathNodeViewModel node = e.Result as VCServerPathNodeViewModel; node.PopulateChildren(); if (m_queue.Count > 0) { QueueLoadChildren(m_queue.Dequeue()); } } } IsLoading = false; }
public void QueueLoadChildren(VCServerPathNodeViewModel node) { if (m_worker.IsBusy) { m_queue.Enqueue(node); } else { m_worker.RunWorkerAsync(node); } }
void m_worker_DoWork(object sender, DoWorkEventArgs e) { if (e.Argument is VCServerPathNodeViewModel) { VCServerPathNodeViewModel node = e.Argument as VCServerPathNodeViewModel; node.GetItems(m_server); e.Result = node; } else { TfsTeamProjectCollection collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(m_migrationSource.ServerUrl)); m_server = collection.GetService <VersionControlServer>(); Item item = m_server.GetItem(VersionControlPath.RootFolder + m_migrationSource.SourceIdentifier); VCServerPathRootViewModel rootNode = new VCServerPathRootViewModel(item, this); rootNode.Load(m_server); rootNode.IsExpanded = true; SelectedNode = rootNode; string[] tokens = m_filterItem.FilterString.Split(VersionControlPath.Separator); for (int i = 2; i < tokens.Length; i++) { SelectedNode.Load(m_server); SelectedNode.IsExpanded = true; VCServerPathNodeViewModel newSelectedNode = SelectedNode.Children.FirstOrDefault(x => string.Equals(x.DisplayName, tokens[i])); if (newSelectedNode != null) { SelectedNode = newSelectedNode; } else { break; } } e.Result = rootNode; } }