コード例 #1
0
        private void RunFullIndexingInSeparateThread(ThreadSafeQueue <Node> queuedNodes)
        {
            isErrorOccurredWhileIndexing = false;
            _isIndexing = true;

            StopAllRunningThreads();

            indexingThread = new Thread(RunFullIndexing);
            indexingThread.IsBackground = true;
            indexingThread.Name         = "indexingThread";
            indexingThread.Start(queuedNodes);

            string viewAndLanguageKey = GetViewAndLanguageKey(CurrentView, CurrentLanguage);

            monitorThread = new Thread(WatchQueueCompletionProgress);
            monitorThread.IsBackground = true;
            monitorThread.Name         = "progressWatchingThread";
            monitorThread.Start(new object[] { queuedNodes, viewAndLanguageKey });
        }
コード例 #2
0
        /// <summary>
        /// </summary>
        protected void RunFullIndexing(ThreadSafeQueue <Node> queuedNodes)
        {
            try
            {
                Debug.WriteLine("AbstractIndexMgr: Starting full index on " + queuedNodes.Count + " nodes...");

                _isIndexing = true;
                ManualResetEvent mre = new ManualResetEvent(false);

                queuedIndexRunner = new QueuedIndexRunner(queuedNodes, mre, GetNodeIndexer(), NodesForIndexingProvider.GetLabelRole());
                queuedIndexRunner.QueueDepleted      += queuedIndexRunner_QueueDepleted;
                queuedIndexRunner.ErrorWhileIndexing += queuedIndexRunner_ErrorWhileIndexing;

                queuedIndexRunner.Run(true);
            }
            catch (Exception e)
            {
                Trace.Write(new Exception("AbstractIndexMgr: An error occurred in RunFullIndexing", e));
            }
        }