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 { } }
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; } }
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()); }