public MainForm() { InitializeComponent(); // сокрытие кнопок showStructureButton.Enabled = false; _g1 = new Graphic(tempBitmapHash1, graphHash1, hash1box); _g2 = new Graphic(tempBitmapHash2, graphHash2, hash2box); }
private void hashAnaliseButton_Click(object sender, EventArgs e) { var splashScreen = new SplashScreen(); splashScreen.Show(); splashScreen.Update(); HashWorker hashWorker; _g1 = new Graphic(tempBitmapHash1, graphHash1, hash1box); _g2 = new Graphic(tempBitmapHash2, graphHash2, hash2box); for (var i = 0; i < Data.PacketCountArray.Length; i++) { hashWorker = new HashWorker(Data.PacketCountArray[i] , Data.FullItemCount / Data.PacketCountArray[i] + (Data.FullItemCount % Data.PacketCountArray[i] > 0 ? 1 : 0) , Data.GeneratedArray , Data.KoefArray[i]); hashWorker.RepresentMiddle(); hashWorker.SaveMiddle(); //Console.WriteLine("{0} => {1}", Data.packetCountArray[i], hashWorker.GetStat()); _g1.DrawNewStat(i, hashWorker.GetStatMid()); hash1box.Update(); Refresh(); } for (var i = 0; i < Data.PacketCountArray.Length; i++) { hashWorker = new HashWorker(Data.PacketCountArray[i] , Data.FullItemCount / Data.PacketCountArray[i] + (Data.FullItemCount % Data.PacketCountArray[i] > 0 ? 1 : 0) , Data.GeneratedArray , Data.KoefArray[i]); hashWorker.RepresentNotation(); hashWorker.SaveNotation(); //Console.WriteLine("{0} => {1}", Data.packetCountArray[i], hashWorker.GetStat()); _g2.DrawNewStat(i, hashWorker.GetStatNot()); hash2box.Update(); Refresh(); } MessageBox.Show(@"Анализ хеширования успешно завершен", @"Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); splashScreen.Close(); }
// ============= Поиск ====================== 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; }