Example #1
0
        private void ff_FileFound(object sender, FileFinderEventArgs e)
        {
            var e2 = new XInputMaskScannerEventArgs();

            e2.DirectoryIndex = e.DirectoryIndex;
            e2.Directories    = e.Directories;
            e2.FileIndex      = e.FileIndex;
            e2.Files          = e.Files;
            e2.State          = XInputMaskScannerState.DirectoryUpdate;
            e2.Message        = string.Format("Step 1: {0} programs found. Searching path {1} of {2}. Please wait...", e.Files.Count, e.DirectoryIndex + 1, e.Directories.Count);
            ReportProgress(e2);
        }
Example #2
0
        public void AddFiles(DirectoryInfo di, ref List <FileInfo> fileList, string searchPattern, bool allDirectories)
        {
            try
            {
                var patterns = searchPattern.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                if (patterns.Length == 0)
                {
                    // Lookup for all files.
                    patterns = new[] { "" };
                }
                for (int p = 0; p < patterns.Length; p++)
                {
                    var pattern = patterns[p];
                    var files   = string.IsNullOrEmpty(pattern)
                                                ? di.GetFiles()
                                                : di.GetFiles(pattern);
                    for (int i = 0; i < files.Length; i++)
                    {
                        // Pause or Stop.
                        while (IsPaused && !IsStopping)
                        {
                            // Logical delay without blocking the current thread.
                            System.Threading.Tasks.Task.Delay(500).Wait();
                        }
                        if (IsStopping)
                        {
                            return;
                        }
                        // Do tasks.
                        var fullName = files[i].FullName;
                        if (!fileList.Any(x => x.FullName == fullName))
                        {
                            fileList.Add(files[i]);
                            var ev = FileFound;

                            if (ev != null)
                            {
                                var e = new FileFinderEventArgs();
                                e.Directories    = _Directories;
                                e.DirectoryIndex = _DirectoryIndex;
                                e.FileIndex      = fileList.Count - 1;
                                e.Files          = fileList;
                                ev(this, e);
                            }
                        }
                    }
                }
            }
            catch { }
            try
            {
                // If must search inside subdirectories then...
                if (allDirectories)
                {
                    var subDis = di.GetDirectories();
                    foreach (DirectoryInfo subDi in subDis)
                    {
                        // Pause or Stop.
                        while (IsPaused && !IsStopping)
                        {
                            // Logical delay without blocking the current thread.
                            System.Threading.Tasks.Task.Delay(500).Wait();
                        }
                        if (IsStopping)
                        {
                            return;
                        }
                        // Do tasks.
                        AddFiles(subDi, ref fileList, searchPattern, allDirectories);
                    }
                }
            }
            catch { }
        }