private void Enum() { if (isLibrary) { Lock(); ProgressInit();//init current progress bar foreach (var host in network) { richTextBoxLog.Text += string.Format("Enumerator started for {0} ip address" + Environment.NewLine, host); AgentInfo agent = new AgentInfo(); agent.host = IPAddress.Parse(host); //agent.community = "Zapad_RO"; //agent.key = "1.3.6.1.2.1.1.3.0"; if (SnmpLibrary.ContainsKey(host)) { agent.community = (string)SnmpLibrary[host]; agent.key = key; Task task = Task.Factory.StartNew(SnmpGet, agent); //задачи не имеют доступа к richtextbox manager.Add(task); } } richTextBoxLog.Text += lineDivider; //ожидаем выполнение каждой операции foreach (Task task in manager) { ProgressStep();//perform progress bar steps task.Wait(); } richTextBoxLog.Text += logBuilder; manager.Clear(); //reporting StringBuilder report = new StringBuilder(); report.AppendFormat("Enumerator report => success {0}, failed {1}, all {2}", successCount, failedCount, network.Count); report.AppendLine(); report.AppendLine(lineDivider); richTextBoxLog.Text += report; Logging(report.ToString());//=>log ProgressClear();//clear progress logBuilder.Clear(); successCount = 0; failedCount = 0; Lock(); isLibrary = false; } else { Lock(); ProgressInit();//init current progress bar foreach (var host in network) { richTextBoxLog.Text += string.Format("Enumerator started for {0} ip address" + Environment.NewLine, host); AgentInfo agent = new AgentInfo(); agent.host = IPAddress.Parse(host); //agent.community = "Zapad_RO"; //agent.key = "1.3.6.1.2.1.1.3.0"; agent.community = community; agent.key = key; Task task = Task.Factory.StartNew(SnmpGet, agent); //задачи не имеют доступа к richtextbox manager.Add(task); } richTextBoxLog.Text += lineDivider; //ожидаем выполнение каждой операции foreach (Task task in manager) { ProgressStep();//perform progress bar steps task.Wait(); } richTextBoxLog.Text += logBuilder; manager.Clear(); //reporting StringBuilder report = new StringBuilder(); report.AppendFormat( String.Format("Enumerator report => success {0}, failed {1}, all {2}", successCount, failedCount, network.Count)); report.AppendLine(); report.AppendLine(lineDivider); richTextBoxLog.Text += report; Logging(report.ToString());//=>log ProgressClear();//clear progress logBuilder.Clear(); successCount = 0; failedCount = 0; Lock(); } }