//Поток распаковки 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()); } }