private void DisposeTasks(object Buffer) { //bufferResult = null; //mySearchTasks = null; //ipList = null; _tasksChecking = null; _oldLines = null; GC.Collect(); }
/*Start*/ private async void button_Start_Click(object sender, EventArgs e) { if (!IsRunning) { #region Перевірка правильності введення ip адрес button_Pause.Tag = false; button_Pause.Text = "Pause"; //https://toster.ru/q/140605 if (String.IsNullOrWhiteSpace(comboBox_IPFirst.Text)) { MessageBox.Show("Помилка у початковій адресі", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (String.IsNullOrWhiteSpace(comboBox_IPLast.Text)) { MessageBox.Show("Помилка у кінцевій адресі", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { _firstIpAddress = IPTools.IPAddress2UInt32(comboBox_IPFirst.Text); } catch (FormatException ex) { _logger.Error(ex); MessageBox.Show("Помилка у початковій адресі", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { _lastIpAddress = IPTools.IPAddress2UInt32(comboBox_IPLast.Text); } catch (FormatException ex) { _logger.Error(ex); MessageBox.Show("Помилка у кінцевій адресі", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!int.TryParse(textBox_Timeout.Text, out _timeOut)) { _logger.Error("Timeout string [{0}] is incorrect", textBox_Timeout.Text); } _logger.Info(string.Format("Timeout = {0} ms", _timeOut)); #endregion #region Ініціалізація інтерфейса _ipListCount = (_lastIpAddress - _firstIpAddress) + 1; _bmpTasksResult = new Bitmap(BMP_WIDTH, BMP_HEIGHT); try { SetProgressMaxValue(100); SetProgress(new ProgressData()); } catch (Exception ex) { _logger.Error(ex); return; } if (_ipListCount == 0) { MessageBox.Show("Помилка у кінцевій адресі", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } StartButtonEnable(false); StopButtonEnable(true); button_Stop.Focus(); _bufferedResult = new BufferedResult <IPInfo>(); _fill.GridFill(SG_Result, null as ListIPInfo, null, _gridHeaders); _oldLines = new ListIPInfo(); pictureBox1.Image = new Bitmap(pictureBox1.ClientSize.Width, pictureBox1.ClientSize.Height); if (!(int.TryParse(textBox_ThreadCount.Text, out _tasksCount))) { _logger.Error("TasksCount string [{0}] is incorrect", textBox_ThreadCount.Text); } #endregion _logger.Info(string.Concat("Start searching from [", comboBox_IPFirst.Text, "] to [", comboBox_IPLast.Text, "]")); _mySearchTasksCancel = new CancellationTokenSource(); await Task.Factory.StartNew(Start, _mySearchTasksCancel.Token, TaskCreationOptions.LongRunning, TaskScheduler.Current); if (_tasksChecking != null) { _tasksChecking.IsStarting = false; } } }