コード例 #1
0
        public void Traverse(string rootDirectory)
        {
            IEnumerable <string> files       = Enumerable.Empty <string>();
            IEnumerable <string> directories = Enumerable.Empty <string>();

            try
            {
                // The test for UnauthorizedAccessException.
                var permission = new FileIOPermission(FileIOPermissionAccess.PathDiscovery, rootDirectory);
                permission.Demand();

                files       = Directory.GetFiles(rootDirectory);
                directories = Directory.GetDirectories(rootDirectory);
            }
            catch
            {
                // Ignore folder (access denied).
            }

            try
            {
                foreach (var file in files)
                {
                    Allfiles.Enqueue(file);
                }
                foreach (var item in directories)
                {
                    //await Task.Run(() => Thread.Sleep(3000)).ConfigureAwait(true);
                    Traverse(item);
                }
            }
            catch
            {
            }
        }
コード例 #2
0
        public async Task FullDirList() // Check All File in  Allfiles Queue
        {
            while (Allfiles.Count <= 0)
            {
                await Task.Run(() => Thread.Sleep(3000)).ConfigureAwait(true);
            }
Gotry:
            await Task.Run(() => Thread.Sleep(1000)).ConfigureAwait(true);

            while (Allfiles.Count > 0)
            {
                try
                {
                    string f = Allfiles.Dequeue();

                    FileInfo xx = new FileInfo(f);
                    if (xx.Length == Lentgh)
                    {
                        if (Gethash(xx.FullName) == Hashfile_string)
                        {
                            Addlistfile(xx.FullName, 1);
                            continue;
                        }
                    }

                    continue;
                }
                catch
                { }
            }
            await Task.Run(() => Thread.Sleep(3000)).ConfigureAwait(true);

            //Addlistfile("recheck full dir list ", 1);
            if (!Countitr)
            {
                goto Gotry;
            }
        }
コード例 #3
0
        private async void BTNScan_Click(object sender, RoutedEventArgs e)
        {
            List <string> listdrive = new List <string>();

            if (Allfiles != null)
            {
                Allfiles.Clear();
            }
            //GridOne.Visibility = Visibility.Hidden;
            prograssbar.Visibility = Visibility.Visible;
            LSTlog.Items.Clear();
            DisableControler();
            if ((bool)rb1.IsChecked)
            {
                listdrive.Add(Custom_directory);
                _worker.RunWorkerAsync(listdrive);
            }
            else
            {
                DriveInfo[] allDrives = DriveInfo.GetDrives();

                foreach (DriveInfo d in allDrives)
                {
                    if (d.IsReady == true)
                    {
                        listdrive.Add(d.Name);
                        //Traverse(d.Name);
                    }
                }

                _worker.RunWorkerAsync(listdrive);
            }

            PRque.Value = 0;
            _           = Task.Run(() => Time_Cheker());
            _           = Task.Run(() => FullDirList());
        }