private void StartPortScanbutton_Click(object sender, EventArgs e) { OpenPortslistView.Clear(); string ip = LANhostslistView.SelectedItems[0].Text; PortScanProgresstextBox.Text = "Сканирование портов (" + ip + "). Подождите!"; PortScanProgresstextBox.Visible = false; PortScanProgressBar.Visible = true; ParameterizedThreadStart port_delegate = new ParameterizedThreadStart(AllPortsByIP); Thread port_Scanning_thread = new Thread(port_delegate); port_Scanning_thread.IsBackground = true; port_Scanning_thread.Start(ip); StartPortScanbutton.Text = "Начать сканирование портов"; StartPortScanbutton.Enabled = false; }
public void AllPortsByIP(object ip) { try { foreach (int p in ports_array) { if (ScanPort(ip.ToString(), p)) { ListViewItem item = new ListViewItem("Порт " + p.ToString() + " - Открыт!"); OpenPortslistView.Invoke(new MethodInvoker(delegate() { OpenPortslistView.Items.Add(item); })); } PortScanProgressBar.Invoke(new progress_bar(delegate() { PortScanProgressBar.PerformStep(); })); } } finally { if (OpenPortslistView.Items.Count == 0) { ListViewItem item = new ListViewItem("Открытые порты отсутствуют!"); OpenPortslistView.Invoke(new MethodInvoker(delegate() { OpenPortslistView.Items.Add(item); })); } bool F = false; bool T = true; PortScanProgressBar.Invoke(new bool_progress((f) => PortScanProgressBar.Visible = f), F); PortScanProgressBar.Invoke(new MethodInvoker(delegate() { PortScanProgressBar.Value = 0; })); string S = "Список открытых портов(" + ip.ToString() + ")."; PortScanProgresstextBox.Invoke(new string_progress((s) => PortScanProgresstextBox.Text = s), S); MessageBox.Show("Процесс сканирования портов завершен!"); PortScanProgresstextBox.Invoke(new bool_progress((t) => PortScanProgresstextBox.Visible = t), T); } }