/// <summary> /// Starts the fault location engine. /// </summary> public void Start() { // Get system settings from the database ReloadSystemSettings(); // Make sure watch directories exist foreach (string path in m_systemSettings.WatchDirectoryList) { TryCreateDirectory(path); } // Create the lookup table used to track which files are being processed if ((object)m_activeFiles == null) { m_activeFiles = new ConcurrentDictionary <string, string>(); } // Setup new file processor to monitor the watch directories if ((object)m_fileProcessor == null) { m_fileProcessor = new FileProcessor(m_systemSettings.FileProcessorID); m_fileProcessor.FolderExclusion = m_systemSettings.FolderExclusion; m_fileProcessor.InternalBufferSize = m_systemSettings.FileWatcherBufferSize; m_fileProcessor.EnumerationStrategy = m_systemSettings.FileWatcherEnumerationStrategy; m_fileProcessor.MaxThreadCount = m_systemSettings.FileWatcherInternalThreadCount; m_fileProcessor.MaxFragmentation = m_systemSettings.FileWatcherMaxFragmentation; m_fileProcessor.FilterMethod = PrevalidateFile; m_fileProcessor.Processing += FileProcessor_Processing; m_fileProcessor.Error += FileProcessor_Error; UpdateFileProcessorFilter(m_systemSettings); } m_stopped = false; foreach (string path in m_systemSettings.WatchDirectoryList) { m_fileProcessor.AddTrackedDirectory(path); } }