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