// running in UI thread public void ReindexSearchTree(BackgroundIndexerParams indexerParams) { if (indexerParams.PathsChanged == null) { lock (BackgroundIndexers) { foreach (var ind in BackgroundIndexers) { ind.CancelAsync(); } BackgroundIndexers.Clear(); } } var indexer = new BackgroundIndexer(); indexer.RunWorkerCompleted += BackgroundIndexerWorkCompleted; indexer.ProgressChanged += BackgroundIndexerProgressChanged; indexer.RunWorkerAsync(indexerParams); lock (BackgroundIndexers) { BackgroundIndexers.Add(indexer); } }
// running in UI thread private void ReindexSearchTree(IEnumerable<string> pathsChanged) { lock (this) { this.NumOfIndexingThreads++; } var indexerParams = new BackgroundIndexerParams(this.DocumentHierarchyFactory, this.WorkspaceDirectoryModel.CurrentWorkspaceDirectory, pathsChanged, this.FilesPatternProvider); this.IndexingSearchingModel.ReindexSearchTree(indexerParams); }