예제 #1
0
        //Поток информирования об упаковке
        private void threadGetInfoHide(Hidder hidder)
        {
            hiding = true;
            long time = 0;

            //Блокируем объекты
            panelHide.BeginInvoke(
                ((Action)(() => panelHide.Enabled = false)));
            panelStatusHide.BeginInvoke(
                ((Action)(() => panelStatusHide.Enabled = true)));

            /*labelStatusHide.BeginInvoke(
             *       ((Action)(() => labelStatusHide.Text = "поиск файлов")));*/
            //Делаем состояния объектов по умолчания
            labelStatusHide.BeginInvoke(
                ((Action)(() => labelStatusHide.ForeColor = Color.Black)));
            progressBarHide.BeginInvoke(
                ((Action)(() => progressBarHide.Value = 0)));
            System.Threading.Thread.Sleep(100);
            //Пока идёт упаковка
            while (hidder.HidingStatus())
            {
                int toHide = hidder.getCountFilesToHide();
                int hided  = hidder.getHidedSuccess();
                //Обновляем пользователю статус
                labelStatusHide.BeginInvoke(
                    ((Action)(() => labelStatusHide.Text = "спрятано " + hided.ToString() + " из " + toHide.ToString())));
                progressBarHide.BeginInvoke(
                    ((Action)(() => progressBarHide.Value = hidder.getHidingProgress())));
                //Делаем задержку 1 секунду
                System.Threading.Thread.Sleep(1000);
                time++;
                //Debug.WriteLine(extracted.ToString() + "  " + hided.ToString());
                //Debug.WriteLine(progress);
            }
            progressBarHide.BeginInvoke(
                ((Action)(() => progressBarHide.Value = hidder.getHidingProgress())));
            string statusMsg;
            Color  msgColor = Color.Red;
            //Инициализируем пользователю окончательное сообщение
            //if (hidder.getCountFilesToHide() > 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.getHidedSuccess().ToString() + "    за " + sTime;
            if (hidder.getHidedSuccess() == 0 && hidder.getHidedFoldersSuccess() > 0)
            {
                statusMsg = "спрятано папок - " + hidder.getHidedFoldersSuccess().ToString() + "    за " + sTime;
            }
            msgColor = Color.DarkGreen;
            if (hidder.getCountFilesToHide() != hidder.getHidedSuccess())
            {
                msgColor = Color.Red;
            }
            if (hidder.getHidedSuccess() == 0 && hidder.getHidedFoldersSuccess() == 0)
            {
                statusMsg = "неудалось спрятать!";
            }
            //} else statusMsg = "папка не может быть пустой!";

            //Выводим сообщение и разблокируем объекты
            labelStatusHide.BeginInvoke(
                ((Action)(() => labelStatusHide.Text = statusMsg)));
            labelStatusHide.BeginInvoke(
                ((Action)(() => labelStatusHide.ForeColor = msgColor)));

            /*panelStatusHide.BeginInvoke(
             *  ((Action)(() => panelStatusHide.Enabled = false)));*/
            panelHide.BeginInvoke(
                ((Action)(() => panelHide.Enabled = true)));
            hiding = false;

            if (hidder.getHidedSuccess() != 0)
            {
                MessageBox.Show("исходный файл - " + outPath);
            }
        }