public async Task Start(CancellationToken cancellationToken)
        {
            if (!Directory.Exists(Settings.DirectoryPath))
            {
                Directory.CreateDirectory(Settings.DirectoryPath);
            }

            Console.WriteLine("Starting Marker Watch Engine.");
            foreach (var fi in Directory.GetFiles(this.Settings.DirectoryPath))
            {
                EnqueueFile(fi);
            }

            this.MonitorDirectory(this.Settings.DirectoryPath);
            while (!cancellationToken.IsCancellationRequested)
            {
                while (FilesQueue.Count > 0)
                {
                    var file = FilesQueue.Dequeue();
                    await ProcessFile(file);
                }

                await Task.Delay(2000);
            }
        }
示例#2
0
 private static void FilesSearchAndQueue(string reg, string entryDir)
 {
     try
     {
         foreach (var file in Directory.EnumerateFiles(entryDir, "*.*", SearchOption.TopDirectoryOnly))
         {
             AllFiles++;
             ActionForm.PauseEvent.WaitOne();
             var filename = Path.GetFileName(file);
             if (!Regex.IsMatch(filename, reg))
             {
                 continue;
             }
             FilesQueue.Enqueue(file);
         }
     }
     catch
     {
         // ignored
     }
 }
        /// <exception cref="Exception"><c>Exception</c>.</exception>
        internal static void ScanDrive(TheImport theImport,
             KeyValuePair<EnhancedDriveInfo, 
                 List<string>> driveRootFolders, 
             ref FilesQueue filesQueue)
        {
            var allFoundFiles = new List<EnhancedFileInfo>();

            var foundFiles = new List<EnhancedFileInfo>();

            try
            {

                ImageCache cachedImages = new ImageCache();

                foreach (string rootFolder in driveRootFolders.Value)
                {

                    if (Directory.Exists(rootFolder))
                    {

                        foundFiles.Clear();

                        foundFiles.AddRange(FindFiles(theImport, rootFolder));

                        RootFolderHandlerBase rootFolderHandler =
                            RootFolderHandlerProvider.ProvideRootFolderHandlerInstance(
                                theImport, driveRootFolders.Key, rootFolder, foundFiles, cachedImages);

                        RootFolderHandlerExecuter.Execute(rootFolderHandler);

                        allFoundFiles.AddRange(foundFiles);

                    }
                    else
                    {
                        theImport.Importer.LogMessages.Enqueue(
                            new LogMessage("Warn", "RootFolder doesn't exist: " + rootFolder));
                    }

                }

                EnhancedFileInfo[] foundFilesArray
                    = allFoundFiles.ToArray();

                filesQueue
                    .Enqueue
                    (foundFilesArray);

            }
            catch (Exception ex)
            {
                theImport.Importer.LogMessages.Enqueue(new LogMessage("Error", ex.ToString()));
                throw;
            }
            finally
            {
                allFoundFiles.Clear();
                foundFiles.Clear();
            }

            theImport.Importer.LogMessages.Enqueue
                (new LogMessage("Debug",
                                "Return from ScanDrive"));
        }