//Поток информирования об упаковке 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); } }