Exemple #1
0
        //Поток распаковки
        private void threadGetInfoExtract(Hidder hidder)
        {
            extracting = true;
            long time = 0;

            panelExtract.BeginInvoke(
                ((Action)(() => panelExtract.Enabled = false)));
            panelStatusExtract.BeginInvoke(
                ((Action)(() => panelStatusExtract.Enabled = true)));
            labelStatus.BeginInvoke(
                ((Action)(() => labelStatus.Text = "поиск файлов")));
            labelStatus.BeginInvoke(
                ((Action)(() => labelStatus.ForeColor = Color.Black)));
            progressBarExtract.BeginInvoke(
                ((Action)(() => progressBarExtract.Value = 0)));
            System.Threading.Thread.Sleep(1000);
            time++; //time++;
            while (hidder.ExtractingStatus())
            {
                int hided     = hidder.getCountHidedFiles();
                int extracted = hidder.getExtractedFiles();
                labelStatus.BeginInvoke(
                    ((Action)(() => labelStatus.Text = "спрятано - " + hidder.getCountHidedFiles().ToString() + "; извлечено - " + hidder.getExtractedFiles().ToString())));
                progressBarExtract.BeginInvoke(
                    ((Action)(() => progressBarExtract.Value = hidder.getExtractingProgress())));
                System.Threading.Thread.Sleep(1000);
                time++;
            }
            progressBarExtract.BeginInvoke(
                ((Action)(() => progressBarExtract.Value = hidder.getExtractingProgress())));
            string statusMsg;
            Color  msgColor = Color.Red;

            if (hidder.getCountHidedFiles() > 0 || hidder.getCountHidedFolders() > 0)
            {
                StringBuilder hh = new StringBuilder(((int)((time - (time % 3600)) / 3600)).ToString());
                if (hh.Length == 1)
                {
                    hh = new StringBuilder("0" + hh);
                }
                StringBuilder mm = new StringBuilder(((int)(((time % 3600)) / 60)).ToString());
                if (mm.Length == 1)
                {
                    mm = new StringBuilder("0" + mm);
                }
                StringBuilder ss = new StringBuilder(((int)(((time % 3600)) % 60)).ToString());
                if (ss.Length == 1)
                {
                    ss = new StringBuilder("0" + ss);
                }
                string sTime = hh.ToString() + ":" + mm.ToString() + ":" + ss.ToString();
                statusMsg = "извлечено файлов - " + hidder.getExtractedFiles().ToString() + "    за " + sTime;
                if (hidder.getExtractedFiles() == 0 && hidder.getExtractedFolders() > 0)
                {
                    statusMsg = "извлечено папок - " + hidder.getExtractedFolders().ToString() + "    за " + sTime;
                }
                msgColor = Color.DarkGreen;
                if (hidder.getCountHidedFiles() != hidder.getExtractedFiles())
                {
                    msgColor = Color.Red;
                }
                if (hidder.getExtractedFiles() == 0 && hidder.getExtractedFolders() == 0)
                {
                    if (!hidder.CorrectPass())
                    {
                        statusMsg = "неправильный пароль";
                    }
                    else
                    {
                        statusMsg = "не получается распаковать";
                    }
                }
            }
            else
            {
                statusMsg = "ничего не найдено!";
                msgColor  = Color.DarkGreen;
            }
            labelStatus.BeginInvoke(
                ((Action)(() => labelStatus.Text = statusMsg)));
            labelStatus.BeginInvoke(
                ((Action)(() => labelStatus.ForeColor = msgColor)));

            /*panelStatusExtract.BeginInvoke(
             *  ((Action)(() => panelStatusExtract.Enabled = false)));*/
            panelExtract.BeginInvoke(
                ((Action)(() => panelExtract.Enabled = true)));
            extracting = false;

            if (hidder.getExtractedFiles() == 1)
            {
                MessageBox.Show("Файл извлечён в папку " + hidder.getOutDirectory());
            }
            else if (hidder.getExtractedFiles() > 1)
            {
                MessageBox.Show("Файлы извлечены в папку " + hidder.getOutDirectory());
            }
        }