Exemplo n.º 1
0
        public MainForm()
        {
            InitializeComponent();
            // сокрытие кнопок
            showStructureButton.Enabled = false;

            _g1 = new Graphic(tempBitmapHash1, graphHash1, hash1box);
            _g2 = new Graphic(tempBitmapHash2, graphHash2, hash2box);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        // ============= Поиск  ======================
        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;
        }