public void SpinIndexingWorkers() { if (backgroundWorkersSpun) throw new InvalidOperationException("The background workers has already been spun and cannot be spun again"); backgroundWorkersSpun = true; workContext.StartIndexing(); indexingBackgroundTask = Task.Factory.StartNew(indexingExecuter.Execute, CancellationToken.None, TaskCreationOptions.LongRunning, backgroundTaskScheduler); ReducingExecuter = new ReducingExecuter(workContext); reducingBackgroundTask = Task.Factory.StartNew(ReducingExecuter.Execute, CancellationToken.None, TaskCreationOptions.LongRunning, backgroundTaskScheduler); }
public void SpinBackgroundWorkers(bool manualStart = false) { if (manualStart == false && indexingWorkersStoppedManually) return; if (backgroundWorkersSpun) throw new InvalidOperationException("The background workers has already been spun and cannot be spun again"); var disableIndexing = Configuration.Settings[Constants.IndexingDisabled]; if (disableIndexing != null) { bool disableIndexingStatus; var res = bool.TryParse(disableIndexing, out disableIndexingStatus); if (res && disableIndexingStatus) return; //indexing were set to disable } backgroundWorkersSpun = true; indexingWorkersStoppedManually = false; workContext.StartWork(); indexingBackgroundTask = Task.Factory.StartNew(indexingExecuter.Execute, CancellationToken.None, TaskCreationOptions.LongRunning, backgroundTaskScheduler); ReducingExecuter = new ReducingExecuter(workContext, IndexReplacer); SpinReduceWorker(); }