// ============= Поиск ====================== private void searchAnaliseButton_Click(object sender, EventArgs e) { if (Data.GeneratedFileName != null && Directory.Exists(Data.GeneratedFileName + "_")) { var dir = new DirectoryInfo(Data.GeneratedFileName + "_"); // папка с файлами Data.Files = dir.GetFiles().Select(file => file.FullName).ToList(); // список для имен файлов Data.CountOfFiles = Data.Files.Count; } else { MessageBox.Show(@"Path not found", @"Error", MessageBoxButtons.OK); return; } Data.GraphMidTime = new Dictionary <long, long>(); Data.GraphNotTime = new Dictionary <long, long>(); var stopwatch = new Stopwatch(); stopwatch.Start(); label1.Text = @"Осталось: " + Data.Files.Count.ToString(CultureInfo.InvariantCulture) + @" из " + Data.CountOfFiles.ToString(CultureInfo.InvariantCulture); if (ActiveForm != null) { ActiveForm.Refresh(); ActiveForm.Enabled = false; } var t = new Thread(new Finder().DoIt); var t2 = new Thread(new Finder().DoIt); t.Start(); t2.Start(); //new Finder().DoIt(); while (t.IsAlive || t2.IsAlive) { Thread.Sleep(5000); label1.Text = @"Осталось: " + Data.Files.Count.ToString(CultureInfo.InvariantCulture) + @" из " + Data.CountOfFiles.ToString(CultureInfo.InvariantCulture); Refresh(); } t.Join(); t2.Join(); stopwatch.Stop(); // выводим графику _g3 = new Graphic(tempBitmapSearch1, graphAnalise1, search1box); _g4 = new Graphic(tempBitmapSearch2, graphAnalise2, search2box); // график первого метода хеширования var maxYSelector = from d in Data.GraphMidTime orderby d.Value select d.Value; long maxY = maxYSelector.Last(); var result = Data.GraphMidTime.OrderBy(pair => pair.Key); int i = 0; foreach (KeyValuePair <long, long> keyValuePair in result) { _g3.DrawNewStat(i++, keyValuePair.Value / (double)maxY * 100); } _g3.DrawYMaxStat(maxY); // график второго метода хеширования maxYSelector = from d in Data.GraphNotTime orderby d.Value select d.Value; maxY = maxYSelector.Last(); result = Data.GraphNotTime.OrderBy(pair => pair.Key); i = 0; foreach (KeyValuePair <long, long> keyValuePair in result) { _g4.DrawNewStat(i++, keyValuePair.Value / (double)maxY * 100); } _g4.DrawYMaxStat(maxY); MessageBox.Show("Поиск выполнен успешно.\nЗатрачено " + stopwatch.Elapsed, @"Success", MessageBoxButtons.OK); label1.Text = @"Осталось: " + Data.Files.Count.ToString(CultureInfo.InvariantCulture) + @" из " + Data.CountOfFiles.ToString(CultureInfo.InvariantCulture); Refresh(); Enabled = true; }
// ============= Поиск ====================== private void searchAnaliseButton_Click(object sender, EventArgs e) { if (Data.GeneratedFileName != null && Directory.Exists(Data.GeneratedFileName + "_")) { var dir = new DirectoryInfo(Data.GeneratedFileName + "_"); // папка с файлами Data.Files = dir.GetFiles().Select(file => file.FullName).ToList(); // список для имен файлов Data.CountOfFiles = Data.Files.Count; } else { MessageBox.Show(@"Path not found", @"Error", MessageBoxButtons.OK); return; } Data.GraphMidTime = new Dictionary<long, long>(); Data.GraphNotTime = new Dictionary<long, long>(); var stopwatch = new Stopwatch(); stopwatch.Start(); label1.Text = @"Осталось: " + Data.Files.Count.ToString(CultureInfo.InvariantCulture) + @" из " + Data.CountOfFiles.ToString(CultureInfo.InvariantCulture); if (ActiveForm != null) { ActiveForm.Refresh(); ActiveForm.Enabled = false; } var t = new Thread(new Finder().DoIt); var t2 = new Thread(new Finder().DoIt); t.Start(); t2.Start(); //new Finder().DoIt(); while (t.IsAlive || t2.IsAlive) { Thread.Sleep(5000); label1.Text = @"Осталось: " + Data.Files.Count.ToString(CultureInfo.InvariantCulture) + @" из " + Data.CountOfFiles.ToString(CultureInfo.InvariantCulture); Refresh(); } t.Join(); t2.Join(); stopwatch.Stop(); // выводим графику _g3 = new Graphic(tempBitmapSearch1, graphAnalise1, search1box); _g4 = new Graphic(tempBitmapSearch2, graphAnalise2, search2box); // график первого метода хеширования var maxYSelector = from d in Data.GraphMidTime orderby d.Value select d.Value; long maxY = maxYSelector.Last(); var result = Data.GraphMidTime.OrderBy(pair => pair.Key); int i = 0; foreach (KeyValuePair<long, long> keyValuePair in result) { _g3.DrawNewStat(i++, keyValuePair.Value / (double) maxY * 100); } _g3.DrawYMaxStat(maxY); // график второго метода хеширования maxYSelector = from d in Data.GraphNotTime orderby d.Value select d.Value; maxY = maxYSelector.Last(); result = Data.GraphNotTime.OrderBy(pair => pair.Key); i = 0; foreach (KeyValuePair<long, long> keyValuePair in result) { _g4.DrawNewStat(i++, keyValuePair.Value / (double)maxY * 100); } _g4.DrawYMaxStat(maxY); MessageBox.Show("Поиск выполнен успешно.\nЗатрачено " + stopwatch.Elapsed, @"Success", MessageBoxButtons.OK); label1.Text = @"Осталось: " + Data.Files.Count.ToString(CultureInfo.InvariantCulture) + @" из " + Data.CountOfFiles.ToString(CultureInfo.InvariantCulture); Refresh(); Enabled = true; }